02- 第一個iOS程序

Storyboard文件

  • 在iOS5之前,蘋果使用xib文件來描述UI界面
  • 在iOS5之后,蘋果采取了更加強大和先進的storyboard文件來描述界面(Xcode5是基于iOS7的)
  • 左邊的箭頭表明:程序一啟動就會顯示箭頭所指的界面

常見的UI控件

UILabel – 文本標簽
  • 文本標簽的作用是顯示一串固定的文字
UIButton – 按鈕
  • 按鈕的作用是:監(jiān)聽用戶的點擊事件,在用戶點擊后做出響應(yīng)
UITextField – 文本輸入框
  • 文本輸入框可以彈出鍵盤,讓用戶輸入文本內(nèi)容
  • 這個設(shè)置表明:UITextField彈出的是數(shù)字鍵盤

View和ViewController

UIView
  • 屏幕上能看得見摸得著的東西就是UIView,比如屏幕上的按鈕、文字、圖片
  • 一般翻譯叫做:視圖\控件\組件
  • UIButton、UILabel、UITextField都繼承自UIView
  • 每一個UIView都是一個容器,能容納其他UIView(比如右圖中的整個鍵盤是一個UIView,里面容納很多小格子的數(shù)字UIView)
父控件和子控件
  • 在“加法計算器”中,最后面那塊白色的全屏的東西也是一個UIView

  • 白色的大UIView中容納了很多小的UIView

    • 在白色的大UIView中,容納了6個小UIView(1個UIButton、2個UITextField、3個UILabel)
    • 這種情況下,我們可以稱白色的大UIView為6個小UIView的父控件(父視圖),6個小UIView都是白色大UIView的子控件(子視圖)
UIViewController
  • 手機上自帶的“設(shè)置”中有很多的界面,點擊對應(yīng)的選項可以跳到下一個界面
  • 每一個新的界面都是一個新的UIView,在切換過程中,涉及到了:
    (1)UIView的創(chuàng)建和銷毀
    (2)UIView跟用戶的交互(處理UIView內(nèi)部每一行的點擊)

  • 其實,每當顯示一個新界面時,首先會創(chuàng)建一個新的UIViewController對象,然后創(chuàng)建一個對應(yīng)的全屏UIView,UIViewController負責管理這個UIView

  • UIViewController就是UIView的大管家,負責創(chuàng)建、顯示、銷毀UIView,負責監(jiān)聽UIView內(nèi)部的事件,負責處理UIView與用戶的交互

  • UIViewController內(nèi)部有個UIView屬性,就是它負責管理的UIView對象 :
    @property(nonatomic,retain) UIView*view;

  • 嚴格來講,下圖箭頭所指的應(yīng)該是一個UIViewController對象,里面白色的界面僅僅是UIViewController內(nèi)部的UIView屬性

  • 箭頭所指UIViewController的真實類型是MJViewController

程序的運行流程

  • 綜合分析,可以得出程序的簡單運行流程:
    1.讀取Main.storyboard文件
    2.創(chuàng)建箭頭所指的MJViewController對象
    3.根據(jù)storyboard文件中描述創(chuàng)建MJViewController的UIView對象
    4.將UIView對象顯示到用戶眼前

監(jiān)聽按鈕點擊

  • 現(xiàn)在已經(jīng)知道:應(yīng)該由ViewController來監(jiān)聽“計算”按鈕的點擊
  • 換句話說,ViewController應(yīng)該提供一個方法出來,當用戶點擊“計算”按鈕時,就調(diào)用這個方法來通知ViewController按鈕被人點了
  • ViewController就在這個方法中實現(xiàn)想做的任何事情,比如計算2個文本輸入框內(nèi)值的和

IBAction和IBOutlet

  • IBAction
    • 從返回值角度上看,作用相當于void
    • 只有返回值聲明為IBAction的方法,才能跟storyboard中的控件進行連線
  • IBOutlet
    • 只有聲明為IBOutlet的屬性,才能跟storyboard中的控件進行連線

設(shè)置程序啟動時加載的storyboard

  • 這個設(shè)置表明:程序啟動時會加載Main.storyboard

退出鍵盤的兩種方式

  • resignFirstResponder
    • 當叫出鍵盤的那個控件(第一響應(yīng)者)調(diào)用這個方法時,就能退出鍵盤
  • endEditing
    • 只要調(diào)用這個方法的控件內(nèi)部存在第一響應(yīng)者,就能退出鍵盤
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,383評論 4 61
  • 文/項小北 我們每個人都生活在各自的過去中,人們會用一分鐘時間去認識一個人,用一小時的時間去喜歡一個人,再用一天的...
    項小北閱讀 5,276評論 8 42
  • 想必很多人已經(jīng)離開了家,踏上了“歸”途。 18日 南方的開學日 北方的返校季 而我作為一個在北方上學的南方人 沒有...
    Erny_閱讀 510評論 2 8

友情鏈接更多精彩內(nèi)容