最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)之視圖切換

 更新時(shí)間:2016年04月13日 10:27:12   作者:執(zhí)著丶執(zhí)念  
在iOS開發(fā)中視圖的切換是很頻繁的,獨(dú)立的視圖應(yīng)用在實(shí)際開發(fā)過程中并不常見,除非你的應(yīng)用足夠簡(jiǎn)單。在iOS開發(fā)中常用的視圖切換有三種,今天我們將一一介紹,希望大家能夠喜歡。

一、視圖切換

  1. UITabBarController (分頁控制器) - 平行管理視圖
  2. UINavigationController (導(dǎo)航控制器) - 壓棧出棧管理視圖
  3. 模態(tài)窗口

二、UITabBarController分頁控制器

  1. UITabBarController是為了利用 頁簽切換視圖 設(shè)計(jì)的控制器
  2. 該控制器有一個(gè)UITabBar控件,用戶通過點(diǎn)擊UITabBar進(jìn)行視圖切換
  3. UITabBarController本身會(huì)不顯示任何視圖,它只是一個(gè) 容器控制器
  4. 為了減少視圖間的耦合,所有UITabBarController的子視圖的相關(guān)標(biāo)題、圖標(biāo)等信息由子視圖自己控制

注意事項(xiàng):

  1. UITabBarController會(huì)一次性初始化所有子控制器,但默認(rèn)只加載第一個(gè)控制器視圖
  2. 每個(gè)視圖控制器都有一個(gè)tabBarController屬性,用它來訪問所在的UITabBarController
  3. 每個(gè)視圖控制器都有一個(gè)tabBarItem屬性,用它來控制UITabBarController的UITabBar上的顯示信息
  4. tarBarItem的image屬性必須是png格式,并且打開alpha通道 ,否則無法正常顯示
  5. UITabBarController通常是作為整個(gè)程序的rootViewController的,我們需要在程序的window顯示之前就創(chuàng)建好它。

具體步驟如下:

  1. 創(chuàng)建一個(gè)UITabBarController對(duì)象
  2. 創(chuàng)建UITabBarController中每一個(gè)tab對(duì)應(yīng)的要顯示的對(duì)象viewController
  3. 通過UITabBarController的viewControllers屬性將要顯示的所有viewController添加到UITabBarController中
  4. 通過設(shè)置UITabBarController對(duì)象為window.rootViewController,然后顯示window

復(fù)制代碼 代碼如下:

//a.初始化一個(gè)tabBar控制器
UITabBarController *tarbarVC = [[UITabBarController alloc] init];
//設(shè)置控制器為Window的根控制器
self.window.rootViewController = tarbarVC;
//b.創(chuàng)建子控制器
UIViewController *c1 = [[UIViewController alloc] init];
c1.view.backgroundColor = [UIColor grayColor];
c1.view.backgroundColor=[UIColor greenColor];
c1.tabBarItem.title = @"消息";
c1.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"];
c1.tabBarItem.badgeValue = @"123";
UIViewController *c2 = [[UIViewController alloc] init];
c2.view.backgroundColor = [UIColor brownColor];
c2.tabBarItem.title = @"聯(lián)系人";
c2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];
UIViewController *c3 = [[UIViewController alloc] init];
c3.tabBarItem.title = @"動(dòng)態(tài)";
c3.tabBarItem.image = [UIImage imageNamed:@"tab_qworld_nor"];
UIViewController *c4 = [[UIViewController alloc] init];
c4.tabBarItem.title = @"設(shè)置";
c4.tabBarItem.image = [UIImage imageNamed:@"tab_me_nor"];
//c.添加子控制器到ITabBarController中
tarbarVC.viewControllers = @[c1,c2,c3,c4];
//d.設(shè)置Window為主窗口并顯示出來
[self.window makeKeyAndVisible];

UITabBarControllerDelegate代理

復(fù)制代碼 代碼如下:

#pragma mark 該方法用于控制TabBarItem能不能選中
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

改變UITabBarController當(dāng)前顯示視圖的方法

  1. 改變selectedIndex屬性
  2. 改變selectedViewController屬性
  3. 改變viewControllers屬性

三、UINavigationController導(dǎo)航控制器

  1. UINavigationController中的子控制器以棧的形式存儲(chǔ),只有在棧頂部的控制器才能顯示在界面上
  2. 壓棧pushController,出棧popController
  3. UINavigationController必須有一個(gè)根控制器rootViewController
  4. 子控制器通過navigationController屬性訪問UINavigationController
  5. 在棧中的子控制器都有一個(gè)導(dǎo)航欄navigationBar,通過navigationItem去控制


UINavigationItem屬于MVC中的Model,封裝了要顯示在UINavigationBar上的數(shù)據(jù):

title: 標(biāo)題
titleView :標(biāo)題視圖
leftBarButtonItem :左按鈕
rightBarButtonItem :右按鈕

下一個(gè)子視圖左側(cè)返回按鈕leftBarButtonItem的標(biāo)題優(yōu)先級(jí):

  1. 導(dǎo)航欄返回按鈕backBarButtonItem的標(biāo)題
  2. 導(dǎo)航欄navigationItem的標(biāo)題
  3. 視圖控制器的標(biāo)題

UINavigationController常用的主要方法:

復(fù)制代碼 代碼如下:

#pragma mark 壓棧,把控制器壓入導(dǎo)航控制器子控制器棧中
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
#pragma mark 出棧,把導(dǎo)航控制器子控制器棧的棧頂彈出
- (void)popViewControllerAnimated:(BOOL)animated;
#pragma mark 多次出棧直到棧頂為指定控制器
- (void)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
#pragma mark 多次出棧直到棧頂為根控制器
- (void)popToRootViewControllerAnimated:(BOOL)animated;

四、模態(tài)窗口

復(fù)制代碼 代碼如下:

#pragma mark 從下方彈出指定的視圖控制器,賦予模態(tài),即當(dāng)前視圖關(guān)閉前,其他視圖上的內(nèi)容無法操作
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;
#pragma mark 關(guān)閉模態(tài)窗口,該方法在模態(tài)窗口中調(diào)用
- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion;

相關(guān)文章

  • iOS中UIAlertView3秒后消失的兩種實(shí)現(xiàn)方法

    iOS中UIAlertView3秒后消失的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了iOS中UIAlertView3秒后消失的兩種實(shí)現(xiàn)方法,實(shí)現(xiàn)方法涉及到NSTimer和PerformSelector:withObject:afterDelay:方法的結(jié)合使用,需要的朋友可以參考下
    2017-12-12
  • iOS10語音識(shí)別框架SpeechFramework應(yīng)用詳解

    iOS10語音識(shí)別框架SpeechFramework應(yīng)用詳解

    在iOS10系統(tǒng)了,apple開放了與語音識(shí)別相關(guān)的接口,開發(fā)者可以將其應(yīng)用到自己的App中,實(shí)現(xiàn)用戶通過語音進(jìn)行功能操作。 這篇文章主要介紹了iOS10語音識(shí)別框架SpeechFramework應(yīng)用,需要的朋友可以參考下
    2016-09-09
  • iOS實(shí)現(xiàn)爆炸的粒子效果示例代碼

    iOS實(shí)現(xiàn)爆炸的粒子效果示例代碼

    之前在網(wǎng)上看到了一個(gè)Android實(shí)現(xiàn)的爆炸效果,感覺非常不錯(cuò),所以自己嘗試用iOS來實(shí)現(xiàn)下效果,現(xiàn)在將實(shí)現(xiàn)的過程、原理以及遇到的問題分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • 詳解iOS - ASIHTTPRequest 網(wǎng)絡(luò)請(qǐng)求

    詳解iOS - ASIHTTPRequest 網(wǎng)絡(luò)請(qǐng)求

    本篇文章主要介紹了iOS - ASIHTTPRequest 網(wǎng)絡(luò)請(qǐng)求 ,詳細(xì)的介紹了 ASIHTTPRequest的使用,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • iOS 獲取設(shè)備唯一標(biāo)示符的方法詳解

    iOS 獲取設(shè)備唯一標(biāo)示符的方法詳解

    本篇文章主要介紹了iOS 獲取設(shè)備唯一標(biāo)示符的方法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解iOS本地推送與遠(yuǎn)程推送

    詳解iOS本地推送與遠(yuǎn)程推送

    這篇文章主要為大家詳細(xì)介紹了iOS本地推送與遠(yuǎn)程推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 將多個(gè)字符串高亮顯示之TTTAttributedLabel

    將多個(gè)字符串高亮顯示之TTTAttributedLabel

    本文介紹了將多個(gè)字符串高亮顯示之TTTAttributedLabel。在此需要對(duì)每個(gè)字符串進(jìn)行匹配,可以研究下kmp和bm算法,在這里應(yīng)用了oc自帶的NSRegularExpression 來進(jìn)行正則表達(dá)式匹配,算是比較簡(jiǎn)單的方法,需要的朋友可以參考下
    2015-07-07
  • iOS開發(fā)技能weak和strong修飾符的規(guī)范使用詳解

    iOS開發(fā)技能weak和strong修飾符的規(guī)范使用詳解

    這篇文章主要為大家介紹了iOS開發(fā)技能weak和strong修飾符的規(guī)范使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • ios端ijkplayer編譯教程

    ios端ijkplayer編譯教程

    下面小編就為大家分享一篇ios端ijkplayer編譯教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例

    IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例的相關(guān)資料,希望通過本文大家能夠掌握這樣的內(nèi)容,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

康马县| 沐川县| 治县。| 东辽县| 九台市| 会宁县| 宁国市| 禄丰县| 婺源县| 昭平县| 巍山| 洮南市| 增城市| 鲜城| 临清市| 琼海市| 新河县| 大田县| 遂宁市| 巫溪县| 亚东县| 乳山市| 武陟县| 齐河县| 昔阳县| 洪洞县| 黑水县| 吉林省| 都江堰市| 桦甸市| 马公市| 墨江| 临洮县| 宜宾市| 通河县| 海林市| 绍兴县| 南郑县| 泸水县| 漳平市| 遵义市|