第一個iOS程序
第一個iOS程序簡介
- 初學iOS開發,研究的程序不要過於復雜,應該從最基本的開始
- 大房子都是由小磚一塊一塊堆成的,而大型app是由無數個小程序段組成的
- 接下來實現一個簡單的“加法計算器”,作為第一個iOS程序(Hello World)
-
分析可得,至少需要開發步驟:
-
添加需要的控件,搭建UI界面:1個按鈕、3個文本標簽、2個文本輸入框
-
監聽按鈕的點擊事件
-
取得2個文本框值,將計算好的最終結果顯示到右邊的文本標簽上
掌握
-
往storyboard中添加控件
-
UIViewController和UIView的關系
-
程序的運行過程
-
IBAction、IBOutlet的作用
-
如何監聽控件的事件(比如按鈕的點擊事件)
-
父控件和子控件的概念
-
退出鍵盤
作業
-
制作一個QQ登錄界面
-
要求:
-
QQ文本框要有“請輸入QQ”的文字提示(用戶輸入文字時會自動消失)
-
密碼文本框要有“請輸入密碼”的文字提示(用戶輸入文字時會自動消失)
-
QQ文本框只能輸入數字
-
密碼文本框的文字必須是暗文顯示
-
點擊登錄按鈕后輸出用戶輸入的QQ和密碼,並且退出鍵盤
Storyboard文件
-
在iOS5之前,蘋果使用xib文件來描述UI界面
-
在iOS5之后,蘋果采取了更加強大和先進的storyboard文件來描述界面(Xcode5是基於iOS7的)
-
左邊的箭頭表明:程序一啟動就會顯示箭頭所指的界面
UILabel – 文本標簽
- 文本標簽的作用僅僅是顯示一串固定的文字
UIButton – 按鈕
- 按鈕的作用是:監聽用戶的點擊事件,在用戶點擊后做出反應
UITextField – 文本輸入框
- 文本輸入框可以彈出鍵盤,讓用戶輸入一些具體的值
UIView
- 屏幕上能看得見摸得着的東西就是UIView,比如屏幕上的按鈕、文字、圖片
- 一般翻譯叫做:視圖\控件\組件
- UIButton、UILabel、UITextField都繼承自UIView
- 每一個UIView都是一個容器,能容納其他UIView(比如右圖中的整個鍵盤是一個UIView,里面容納很多小格子的數字UIView)
父控件和子控件
- 在“加法計算器”中,最后面那塊白色的全屏的東西也是一個UIView
- 白色的大UIView中容納了很多小的UIView,視圖層次結構如下圖所示
-
在白色的大UIView中,容納了6個小UIView(1個UIButton、2個UITextField、3個UILabel)
-
這種情況下,我們可以稱白色的大UIView為6個小UIView的父控件(父視圖),6個小UIView都是白色大UIView的子控件(子視圖)
UIViewController
- 手機上自帶的“設置”中有很多的界面,點擊對應的選項可以跳到下一個界面
-
每一個新的界面都是一個新的UIView,在切換過程中,涉及到了:
-
UIView的創建和銷毀
-
UIView跟用戶的交互(處理UIView內部每一行的點擊)
-
其實,每當顯示一個新界面時,首先會創建一個新的UIViewController對象,然后創建一個對應的全屏UIView,UIViewController負責管理這個UIView
-
UIViewController就是UIView的大管家,負責創建、顯示、銷毀UIView,負責監聽UIView內部的事件,負責處理UIView與用戶的交互
-
UIViewController內部有個UIView屬性,就是它負責管理的UIView對象 :
- @property(nonatomic,retain) UIView *view;
-
嚴格來講,下圖箭頭所指的應該是一個UIViewController對象,里面白色的界面僅僅是UIViewController內部的UIView屬性
-
箭頭所指UIViewController的真實類型是MJViewController
加法計算器程序的運行流程
- 綜合分析,可以得出程序的簡單運行流程:
- 讀取Main.storyboard文件
- 創建箭頭所指的MJViewController對象
- 根據storyboard文件中描述創建MJViewController的UIView對象
- 將UIView對象顯示到用戶眼前
如何監聽按鈕點擊
- 現在已經知道:應該由MJViewController來監聽“計算”按鈕的點擊
- 換句話說,MJViewController應該提供一個方法出來,當用戶點擊“計算”按鈕時,就調用這個方法來通知MJViewController按鈕被人點了
- MJViewController就在這個方法中實現想做的任何事情,比如計算2個文本輸入框內值的和
補充問題
- IBAction和IBOutlet究竟有什么作用?
- 還有其他拖線方式么?
- Storyboard文件中箭頭的含義?
- 如何更換storyboard文件?
- 如何讓文本框只能輸入數字?
- 如何退出鍵盤?
- Company Identifier和Bundle Identifier的作用
- 模擬器還有哪些功能?
- 特別提醒:iOS7和iOS6的區別
IBAction和IBOutlet
- IBAction
- 從返回值角度上看,作用相當於void
- 只有返回值聲明為IBAction的方法,才能跟storyboard中的控件進行連線
- IBOutlet
- 只有聲明為IBOutlet的屬性,才能跟storyboard中的控件進行連線
設置程序啟動時加載的storyboard
- 這個設置表明:程序啟動時會加載Main.storyboard
設置UITextField的鍵盤類型
- 這個設置表明:UITextField彈出的是數字鍵盤
退出鍵盤的兩種方式
- resignFirstResponder
- 當叫出鍵盤的那個控件(第一響應者)調用這個方法時,就能退出鍵盤
- endEditing
- 只要調用這個方法的控件內部存在第一響應者,就能退出鍵盤