国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

IOS學(xué)習(xí)筆記----15/09/01

2019-11-14 18:24:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.創(chuàng)建控制器的三種方式:

  1. 單純的alloc init
    1 MyViewController *myvc = [[MyViewController alloc] init];2 self.window.rootViewController = myvc;
  2. 加載storyboard的方式
    1 MyStoryboard *storyboard = [MyStoryboard storyboardWithName:@"myBoard" bundle:nil];2 MyViewController *myvc = [storyboard instantiateViewControllerWithIdentifier:@"myController"];3 self.window.rootViewController = myvc;
  3. 加載xib的方式(該方法在創(chuàng)建完成后需要在xib界面將File's Owner設(shè)置成MyViewController類并且右鍵拖線將View設(shè)置為想顯示的View窗口)
    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ò)程大致為以下幾步:

  1.  先將self.window alloc并且initWithFrame或者init然后給frame屬性賦值;
  2. 聲明一個(gè)新的UIStoryboard對(duì)象并且指向[UIStoryboard storyboardWithName:@"Main" bundle:nil];
  3. 給window的根控制器rootViewController賦值[storyboard instantiateInitialViewController];
  4. 使用[self.window makeKeyAndVisible]顯示window;

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添加子控件:

  1. 調(diào)用pushViewController方法;
  2. 調(diào)用addChildViewController方法;
  3. 給viewControllers賦予新數(shù)組并在其中添加ViewController;
  4. 在alloc后不使用init而是使用initWithRootViewController方法;

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;
進(jìn)棧和出棧

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.觀察控制器生命周期的方法:

  1. viewDidLoad:窗口加載完畢。
  2. ViewWillAppear:窗口即將顯示到window上。
  3. viewDidAppear:窗口已經(jīng)顯示到window上。
  4. viewWillDisappear:窗口即將從window上移除。
  5. viewDidDisappear:窗口已經(jīng)從window上移除。
  6. viewWillUnload:內(nèi)存即將銷毀的時(shí)候。
  7. viewDidUnload:內(nèi)存銷毀完畢的時(shí)候。
  8. didReciveMemoryWarning:接收到內(nèi)存警告的時(shí)候。
    // MyController1 viewDidLoad// MyController1 viewWillAppear// MyController1 viewDidAppear// MyController2 viewDidLoad// MyController1 viewWillDisAppear// MyController2 viewWillAppear// MyController1 viewDidDisAppear// Mycontroller2 viewDidAppear
    生命周期部分打印結(jié)果

     

16.生命周期參考圖:

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

 

 


剛開(kāi)始寫沒(méi)幾天,只是對(duì)我每天所學(xué)知識(shí)的一個(gè)記錄,寫的很亂,如果有錯(cuò)還望指正。

/!-- 灰色表示以后研究。--/

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 莒南县| 天水市| 铜陵市| 嘉禾县| 页游| 尼勒克县| 铁岭县| 竹北市| 炎陵县| 柏乡县| 卓资县| 阿克| 株洲县| 那曲县| 吉安县| 尉犁县| 进贤县| 长武县| 南汇区| 漳浦县| 新竹县| 台安县| 大渡口区| 永春县| 平乡县| 湾仔区| 呼伦贝尔市| 吐鲁番市| 堆龙德庆县| 贵州省| 增城市| 抚州市| 太原市| 贵定县| 安国市| 沧州市| 凌海市| 定安县| 威海市| 枣强县| 伊宁县|