1.創(chuàng)建控制器的三種方式:
1 MyViewController *myvc = [[MyViewController alloc] init];2 self.window.rootViewController = myvc;
1 MyStoryboard *storyboard = [MyStoryboard storyboardWithName:@"myBoard" bundle:nil];2 MyViewController *myvc = [storyboard instantiateViewControllerWithIdentifier:@"myController"];3 self.window.rootViewController = myvc;
1 MyViewController *myvc = [[MyViewController alloc] initWithNibName:@"MyNib" bundle:nil];2 self.window.rootViewController = myvc;
2.程序啟動(dòng)時(shí)會(huì)去尋找Main Interface,如果找到Main Interface則會(huì)自動(dòng)加載默認(rèn)的storyboard,加載的過(guò)程大致為以下幾步:
3.storyboard加載后使用instantiateViewControllerWithIdentifier:@"storyboardId"方法也可以獲得storyboard的ViewController對(duì)象。
4.同樣可以使用alloc init創(chuàng)建控制器對(duì)象然后設(shè)置為根控制器的方式來(lái)顯示頁(yè)面,但是添加控件就必須使用代碼了。
5.storyboard需要主動(dòng)加載,即使storyboard設(shè)置為MyViewController,如果通過(guò)alloc init創(chuàng)建ViewController而不是通過(guò)加載storyboard,那么storyboard(包括其中的控件)不會(huì)自動(dòng)進(jìn)行加載。
6.下圖為參考,如果MyViewController實(shí)現(xiàn)了loadView方法,則會(huì)執(zhí)行l(wèi)oadView中的方法而不去加載storyboard或者xib文件(在加載文件之前),如果沒(méi)有實(shí)現(xiàn),再去尋找storyboard或者與nibName對(duì)應(yīng)的xib,找不到nibName的時(shí)候會(huì)先去找與控制器類名去除Controller后相同文件名的xib文件,如果還未找到則找與控制器類名完全相同的xib文件。

7.在調(diào)用[self.window makeKeyAndVisible]方法的時(shí)候會(huì)因?yàn)橐@示window,然后會(huì)調(diào)用window的根控制器,然后調(diào)用根控制器的view,因?yàn)槭菓屑虞d,如果之前設(shè)置了myvc.view的某些屬性,則當(dāng)時(shí)就會(huì)立即去繪制view,成功繪制出View后會(huì)調(diào)用viewDidLoad方法(此過(guò)程中只會(huì)調(diào)用一次)。另一張圖可能會(huì)更加清楚些,不過(guò)下圖忽略了xib。

8.通過(guò)使用UINavigationController的pushViewController方法可以做到界面的跳轉(zhuǎn),最后push進(jìn)去的則最先顯示。(用棧來(lái)說(shuō)的話,就是出棧,銷毀棧頂?shù)目刂破饕约癡iew,顯示新棧頂?shù)腣iew)
9.四種方法實(shí)現(xiàn)給NavigationContoller添加子控件:
10.進(jìn)棧與出棧的方法

1 // 使用push方法能讓某個(gè)控制器進(jìn)棧 2 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; 3 4 // 使用pop方法可以出棧 5 6 // 將棧頂?shù)目刂破饕瞥?/span> 7 - (UIViewController *)popViewControllerAnimated:(BOOL)animated; 8 9 // 回到指定的子控制器10 - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;11 12 // 回到根控制器(棧底控制器)13 - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
11.棧頂ViewController的navigationBar返回按鈕是由次棧頂?shù)腣iewController中的backBarButtonItem決定的。只要對(duì)次棧頂?shù)腂ackBarButtonItem進(jìn)行賦值UIBarButtonItem就可以修改返回鍵的標(biāo)題。
12.控制器的View默認(rèn)是占滿整個(gè)屏幕的。
13.通過(guò)拖線設(shè)置navigationController的rootViewController屬性可以設(shè)置根控制器。
14.storyboard直接拖NavigationCotroller,然后通過(guò)拖線連接的方式連接ViewController,segue選擇push。(在IOS7的時(shí)候還是能選擇push,但是在ios8的時(shí)候,xcode6.1.1版本上push已經(jīng)變成了不建議使用,有新的名為show的方法可以替代,起到同樣效果,暫時(shí)不知道有什么優(yōu)點(diǎn))
15.觀察控制器生命周期的方法:

// MyController1 viewDidLoad// MyController1 viewWillAppear// MyController1 viewDidAppear// MyController2 viewDidLoad// MyController1 viewWillDisAppear// MyController2 viewWillAppear// MyController1 viewDidDisAppear// Mycontroller2 viewDidAppear
16.生命周期參考圖:

17.內(nèi)存警告處理參考圖:

剛開(kāi)始寫沒(méi)幾天,只是對(duì)我每天所學(xué)知識(shí)的一個(gè)記錄,寫的很亂,如果有錯(cuò)還望指正。
/!-- 灰色表示以后研究。--/
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注