多控制器管理
pch文件
- ** 創(chuàng)建PCH文件 **
- ** 系統(tǒng)內(nèi)增加PCH文件(pre搜索) **
** 注意:PCH文件的路徑為真實(shí)路徑.不是bounds路徑就可以了. **
作用:
- 導(dǎo)入公用的頭文件
- 導(dǎo)入公用的宏(全局宏)
- 自定義NSLog(系統(tǒng)的NSLog非常消耗cpu,所以定義NSLog減少消耗,進(jìn)行測(cè)試.
- 如果有c文件存在,會(huì)產(chǎn)生沖突,C中編譯無法識(shí)別OC(加條件編譯,OC時(shí)才才執(zhí)行).
首先因?yàn)槭窃谥笆褂玫耐瞥鰏wift后就暫停系統(tǒng)自動(dòng)創(chuàng)建了,我們手動(dòng)創(chuàng)建時(shí)需要配置系統(tǒng)根目錄文件.
pch文件中常用代碼
//如果有C文件還要加判斷不然報(bào)很多錯(cuò)誤
#ifdef __OBJC__
//全局宏
#define M 32
//導(dǎo)入共用的頭文件
#import "ZLPerson.h"
//調(diào)試時(shí)可以使用自定義的NSLog,上線不能使用
#ifdef DEBUG
//在DEBUG下才替換NSLog
#define ZLLog(...) NSLog(__VA_ARGS__)
#else
//否則自定義的打印方式不走任何替換
#define ZLLog(...)
#endif
#endif
UIApplication
單例設(shè)計(jì)模式
-
可以設(shè)置角標(biāo)
0. 獲取程序?qū)ο? 1. 創(chuàng)建遠(yuǎn)程通知設(shè)置對(duì)象 UIUserNotificationSettings 類型對(duì)象 2. iOS8.0之后需要注冊(cè) 程序?qū)ο笞?cè) [app registerUserNotificationSettings:settings] 3. 設(shè)置角標(biāo)
app.applicationBadgeNumber.
4. 允許顯示通知
- app對(duì)象設(shè)置狀態(tài)欄(必須先添加info.plist 的View controller-based status bar appearance為no)
- 網(wǎng)絡(luò)指示器(聯(lián)網(wǎng)的圖標(biāo))networkActivityIndicator屬性.網(wǎng)絡(luò)菊花
- 分享:鏈接對(duì)象(NSNRL 創(chuàng)建時(shí)@"http://www.baidu.com")電話tel,短訊msm,郵件等.
UIApplication的代理方法作用
//了解這些方法什么時(shí)候開始調(diào)用,并且** 自己手動(dòng)添加一個(gè)接受內(nèi)存警告的方法.(因?yàn)榇矸椒ㄏ仁盏絻?nèi)存警告) **
- didfinishlaunching啟動(dòng)
- background后臺(tái)
- foreground前臺(tái)
程序啟動(dòng)的過程
1.打開程序-->2.執(zhí)行main函數(shù)-->3.執(zhí)行UIApplicationMain函數(shù)(各個(gè)參數(shù)的含義:第三個(gè)??)-->4.初始化UIApplication(創(chuàng)建和設(shè)置代理對(duì)象,開啟循環(huán)事件)-->5.監(jiān)聽系統(tǒng)事件.-->6.結(jié)束程序.
手動(dòng)在空白程序中創(chuàng)建控制器添加window和view(關(guān)閉storyBoard作為程序入口)
- 創(chuàng)建UIWindow(代理中有window屬性)
- 創(chuàng)建控制器對(duì)象(控制器被創(chuàng)建時(shí)就自帶一個(gè)view屬性.
- 將控制器對(duì)象作為window對(duì)象(rootViewController屬性)的根控制器
- 設(shè)置window對(duì)象(keyWindow)為可視化.
控制器的三種創(chuàng)建方式.
- alloc init
- board
1. - XIB(注意設(shè)置file`s Owner)的兩個(gè)重要點(diǎn)
1. 指定名字
2. 同名
3. 同名去掉controller
控制器中的UIView的創(chuàng)建(采用的是懶加載的方式)
控制器創(chuàng)建好以后, 控制器所管理的View是如何創(chuàng)建的?
控制器的View是通過調(diào)用控制器的loadView方法來創(chuàng)建的缀去。這個(gè)方法是UIViewController中的一個(gè)方法瞎访。
** 只要控制器的loadView方法被調(diào)用了, 那么證明控制器的View創(chuàng)建好了字柠。當(dāng)調(diào)用完畢控制器的loadView方法以后, 從這時(shí)開始, 才創(chuàng)建好了控制器的view
當(dāng)控制器的View被創(chuàng)建好以后, 緊接著就調(diào)用控制器的viewDidLoad方法
控制器的View采用了懶加載的方式, 也就是說, 在需要的使用(在用到的時(shí)候)才會(huì)創(chuàng)建(調(diào)用loadView方法)。
** 注意: 無論控制器是如何創(chuàng)建的, 只要在控制器中, 重寫了("實(shí)現(xiàn)了")loadView方法, 并且沒有調(diào)用[super loadView]方法, 那么最終控制器的View就必須完全在loadView方法中自己來創(chuàng)建了启妹。所以loadView方法可以用來自定義View。
多控制器
- 導(dǎo)航控制器
navigationItem屬性的具體內(nèi)容:
title屬性
titleView屬性
leftBarButtonItem // 只能設(shè)置左上角的一個(gè)按鈕
leftBarButtonItems // 可以設(shè)置左上角有多個(gè)按鈕
rightBarButtonItem // 只能設(shè)置右上角的一個(gè)按鈕
rightBarButtonItems // 可以設(shè)置右上角有多個(gè)按鈕
backBarButtonItem // 設(shè)置下一個(gè)控制器, 左上角的按鈕。默認(rèn)情況下鸟废,該按鈕文字與上一個(gè)控制器的title文字相同。
- UITabBarController
控制器的生命周期
當(dāng)控制器被創(chuàng)建加載一次會(huì)調(diào)用系統(tǒng)的這些方法
1. loadView 加載view
2. viewDidLoad 已經(jīng)加載view
3. viewWillAppear view將要被顯示
4. viewWillLayoutSubviews view將要布局子控件
5. viewDidlayoutSubviews view已經(jīng)布局子控件
6. viewDidAppear view已經(jīng)顯示
7. viewWillDisAppear view將要消失
8. viewDidDisAppear view已經(jīng)消失
9. delloc方法銷毀. 控制器銷毀