日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第七堂:NavigationController以及TabBarController

發(fā)布時(shí)間:2023/11/30 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第七堂:NavigationController以及TabBarController 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上次的筆記中我們提到了View Controller的基礎(chǔ),以及如何建立自己的View Controller。在這一次的課程內(nèi)容中,我們將學(xué)習(xí)到如何使用UIKit所提供的View Controllers來(lái)幫助我們建立程式的導(dǎo)覽。

第七次的課堂中,主要涵蓋了一下幾個(gè)主題:

  • Navigation Controller
  • Controller間的資料傳遞
  • 自訂導(dǎo)覽列
  • Tab Bar Controller
  • 結(jié)合兩種形式
  • Navigation Controller

    在上一次的iPhone開(kāi)發(fā)課程筆記中我們談到了View Controller的建立方法以及概念,概括而言,View Controller在iPhone程式當(dāng)中扮演著主幹的角色,負(fù)責(zé)銜接View和Model。

    而在上回筆記中的後段,我們也曾經(jīng)談過(guò)我們可以透過(guò)UIKit中所提供的View Controller來(lái)銜結(jié)我們自己的View Controller,建立出整個(gè)程式的動(dòng)線。而Navigation Controller就是常用的一種。很多iPhone的程式中都有Navigation Controller,像是當(dāng)我們?cè)趯]嬃斜碇羞x擇了某一張專輯,隨集會(huì)從螢?zāi)蛔筮厧敫枨牧斜?#xff0c;我們也可以點(diǎn)左上角的返回按鈕回到專輯列表,這樣的導(dǎo) 覽模式就是Navigation Controller。

    而Navigation Controller的畫(huà)面就如下所示,在中間顯示了目前在Stack最上端的Controller的View,在上面則是這個(gè)Controller的title,左上角的上一頁(yè)按鈕則是前一個(gè)Controller的title。

    就實(shí)做上來(lái)說(shuō),Navigation Controller下面包含了許多需要顯示的View Controllers,用Stack的方式集合在一起。當(dāng)我們需要換頁(yè)的時(shí)候,我們只需要push一個(gè)View Controller進(jìn)去,而需要回到上一頁(yè)則是透過(guò)pop一個(gè)View Controller來(lái)達(dá)成。

    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; // 換到新的Controller - (UIViewController *)popViewControllerAnimated:(BOOL)animated; // 回到上一個(gè)Controller - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated; // 整組換掉,在iPhone OS 3.0後加入

    上面這幾個(gè)方法中,(BOOL)animated這個(gè)參數(shù)決定了換頁(yè)時(shí)是否會(huì)有動(dòng)畫(huà)的效果。在大多數(shù)的情況下,我們當(dāng)然想要顯示換頁(yè)的效果,但是當(dāng)程式剛啟動(dòng)、初始化時(shí),在加入第一個(gè)VIew Controller的時(shí),我們就不需要?jiǎng)赢?huà)的效果。

    值得一提的是,我們一般很少會(huì)直接呼叫pop方法,因?yàn)樵谑褂谜甙聪伦笊辖堑耐嘶匕粹o時(shí)就會(huì)自動(dòng)呼叫這個(gè)方法了。

    在投影片的第19頁(yè)和22有分別介紹如何初始化一個(gè)Navigation Controller以及如何加入新的Controller,有興趣的讀者還請(qǐng)參考。比較需要注意的是,當(dāng)我們初始化完 NavigationController之後,要記得把NavigationController的view加入到window的subview中,否 則畫(huà)面上不會(huì)顯示。

    Controller間的資料傳遞

    在程式的進(jìn)行中,會(huì)有很多Controller被建立或是移除,那我們要怎麼讓這些Controller能夠互相溝通呢?用下圖的例子作為舉例,List Controller包含了所有資料的列表,而Detail Controller則是會(huì)顯示被選取道的資料內(nèi)容。

    由List Controller傳遞資料到Detail Controller的方法相當(dāng)簡(jiǎn)單,由於後者的初始化會(huì)由前者進(jìn)行,所以只要定義好初始化的參數(shù)就沒(méi)問(wèn)題了。然而,要從後者傳遞給前者,我們會(huì)使用 Delegate的方式,也就是建立一組protocol,讓List Controller去實(shí)做,當(dāng)Detail Controller需要傳遞訊息時(shí)則呼叫List Controller的對(duì)應(yīng)方法就行了。

    自訂導(dǎo)覽列

    Navigation Controller所產(chǎn)生的螢?zāi)划?huà)面最上方有條導(dǎo)覽列,包含了標(biāo)題還有一些按鈕,我們可以透過(guò)修改UINavigationItem來(lái)達(dá)成我們想要的效 果。每個(gè)View Controller都包含一個(gè)UINavigationItem,然而只有在Navigation Controller的Stack最上方的才會(huì)被顯示。

    如果我們修改標(biāo)題的話,並不需要修改UINavigationItem,因?yàn)閂iew Controller中就有一個(gè)title的property,UINavigationItem會(huì)自動(dòng)繼承這個(gè)property來(lái)顯示。

    至於按鈕的部份,UIKit提供了三種不同的按鈕,分別是字串的顯示、圖片的顯示和系統(tǒng)內(nèi)建的按鈕。而這些按鈕就如同一般按鈕一樣,用的是target-action的概念,在投影片的第50到59頁(yè)中有範(fàn)例的程式碼,讀者可以直接複製使用。

    此外,我們也可以在原本title的地方顯示一個(gè)View而非單純的字串,只要將self.navigationItem.titleView指定為想要顯示的View即可。

    最後,因?yàn)橥嘶匕粹o是直接使用NavigationController中Stack的前一項(xiàng)Controller的title,有時(shí)候會(huì)出現(xiàn)文字過(guò)長(zhǎng)的情形,請(qǐng)參考投影片的第66頁(yè)的作法,另行設(shè)定一個(gè)按鈕替換,就可以解決這個(gè)問(wèn)題了。

    Tab bar Controller

    談完了NavgationController,我們當(dāng)然也沒(méi)有忘記TabBarController。TabBarController就是我們?cè)诟鱾€(gè)App中看到下方有一排按鈕,每個(gè)按鈕分別會(huì)切換到不同的View Controller。

    在投影片78頁(yè)中可以看到,建立TabBarController的作法跟NavigationController相同,一樣要記得加入到window的subviews當(dāng)中,才會(huì)在螢?zāi)簧巷@示。

    如同UINavigationItem一樣,每個(gè)View Controller也包含了一個(gè)UITabBarItem物件,由文字及圖案組成,而UIKit也提供了一些系統(tǒng)內(nèi)建的按鈕可以使用。建立按鈕的程式碼 在投影片的第84和87頁(yè),大家還多多參考。要注意的是,除了用程式建立UITabBarItem之外,我們也可以透過(guò)Interface Builder來(lái)建立,相對(duì)是比較容易、簡(jiǎn)單。

    結(jié)合兩種形式

    最後,我們也可以結(jié)合以上兩種形式,由Tab Bar Controller作為基礎(chǔ),加入Navigation Controller或是其他自訂的View Controller,這樣一來(lái)就形成了一般常見(jiàn)的iPhone應(yīng)用程式架構(gòu)了。

    結(jié)論

    在這次的課程中,我們學(xué)習(xí)到了兩種導(dǎo)覽用的View Controlles的使用方法。在下一次的內(nèi)容中,我們將看到如何透過(guò)Table View Controller來(lái)顯示大量資料,並且處理捲動(dòng)的效果,還請(qǐng)各位讀者敬請(qǐng)期待!

    參考資源

    • Lecture #7 – Navigation and Tab Bar Controllers
    • View Controller Programming Guide for iPhone OS
    • UINavigationController Class Reference
    • UITabBarController Class Reference

    轉(zhuǎn)載于:https://www.cnblogs.com/WuShuang-/archive/2012/02/28/2371866.html

    總結(jié)

    以上是生活随笔為你收集整理的第七堂:NavigationController以及TabBarController的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本伦理片在线播放 | 精品国产一区二区三区久久久久久 | 亚洲精品一二三四区 | 亚洲av毛片成人精品 | 亚洲精品网址 | 大乳村妇的性需求 | 夜夜夜夜操 | 国产欧美123| 日韩一二三四区 | 神马午夜在线观看 | 在线观看亚洲网站 | 色哟哟欧美精品 | 久久久久亚洲AV | 男人手机天堂 | 日韩激情在线视频 | 男人午夜免费视频 | 黄色片小视频 | 日韩在线视频播放 | 在线观看黄色av | 我把护士日出水了视频90分钟 | 亚洲熟女综合一区二区三区 | 朝桐光在线视频 | 日韩av男人天堂 | 五月婷婷在线观看 | 国产精品久久久久无码av色戒 | xx性欧美肥妇精品久久久久久 | 欧美日韩国产精品成人 | 日韩成人免费视频 | 免费黄色在线 | 神马午夜在线观看 | 国产黄色一级片视频 | 岳睡了我中文字幕日本 | 日韩成人在线播放 | 国产免费内射又粗又爽密桃视频 | 青娱乐国产在线 | 午夜激情四射 | 男人天堂一区 | www成人啪啪18软件 | 日韩av在线观看免费 | 边打电话边做 | 国产精品久久久久久av | 六月婷婷综合网 | 日本免费一区二区三区四区五六区 | 亚洲视频网站在线观看 | 日本高清在线观看 | 中文字幕精品久久久久人妻红杏1 | 欧美黑人巨大xxx极品 | 色爽爽爽 | 少妇性bbb搡bbb爽爽爽欧美 | 美女网站黄频 | av黄色片 | 无码国产精品一区二区色情男同 | 亚洲偷偷 | 久久国内精品视频 | 好吊操视频这里只有精品 | 91蝌蚪视频在线观看 | 精品3p| 尤物视频网站在线观看 | 伊人伊色| 国产制服丝袜在线 | 欧美精品一二三 | 深夜成人在线 | 成都免费高清电影 | 浓精h攵女乱爱av | 一路向西在线看 | 熟女一区二区三区视频 | 福利综合网| 古代玷污糟蹋np高辣h文 | 日韩在线观看一区二区 | 久久福利视频导航 | 亚洲在线观看av | 亚洲六月丁香色婷婷综合久久 | 国产乱国产乱老熟300部视频 | 国产一区在线播放 | 国产高清视频免费在线观看 | 国产精品美女久久久久久久 | 欧美精品videos另类日本 | 老熟女高潮一区二区三区 | 精品一区久久久 | 免费看特级毛片 | 久热99 | av导航网址 | 日韩字幕在线 | 天天摸天天操天天射 | 蜜桃传媒| 日日干日日摸 | 日干夜干天天干 | 熟女国产精品一区二区三 | 九色porny原创自拍 | 可以看毛片的网站 | 91国产视频在线播放 | 国产综合视频在线 | 国产精品毛片久久久久久久av | 97九色 | 国产伦精品一区二区三区网站 | 国产精品一区二区三区在线看 | 极品av在线 | jizz18欧美18 | 另类av小说 |