【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController_第4頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】UIKit框架(11)導(dǎo)航控制器UINavigationController

介紹多控制器管理中非常重要的一個(gè)控制器UINavigationController它負(fù)責(zé)管理多個(gè)控制器,能夠輕松完成控制器間的切換如:iOS系統(tǒng)上的設(shè)置

父類是UIViewController,但其功能并非是管理view,而是管理多個(gè)控制器控制器棧式管理:

當(dāng)切換時(shí),將一個(gè)控制器入棧,當(dāng)返回時(shí),棧頂控制器出棧

當(dāng)前顯示的永遠(yuǎn)是棧頂控制器的view,棧結(jié)構(gòu)如下:@property(nonatomic,

copy)

NSArray

*viewControllers

//管理的所有控制器

@property(nonatomic,

readonly,

retain)

UIViewController

*topViewController

//當(dāng)前顯示的控制器代碼使用導(dǎo)航控制器導(dǎo)航控制器的創(chuàng)建:-

(instancetype)initWithRootViewController:(UIViewController

*)rootViewController

rootViewController參數(shù):根控制器,即管理的第一個(gè)頁(yè)面跳轉(zhuǎn)動(dòng)作:

使用導(dǎo)航控制器的pushViewController方法:-

(void)pushViewController:(UIViewController

*)viewController

animated:(BOOL)animated

也就是說(shuō),跳轉(zhuǎn)動(dòng)作的執(zhí)行者是導(dǎo)航控制器,而不是源控制器

源控制器可以通過(guò)它的屬性訪問(wèn)到導(dǎo)航控制器:@property(nonatomic,

readonly,

retain)

UINavigationController*navigationController

如一個(gè)跳轉(zhuǎn)動(dòng)作:AMViewController

*vc

=

[[AMViewControllerTwo

alloc]

init];

[self.navigationController

pushViewController:vc

animated:YES];

返回動(dòng)作:

非根控制器的導(dǎo)航欄上,都默認(rèn)有一個(gè)返回按鈕,點(diǎn)擊此按鈕能夠自動(dòng)返回

也可以通過(guò)代碼返回,導(dǎo)航控制器的方法:-

(UIViewController

*)popViewControllerAnimated:(BOOL)animated

//返回一個(gè)控制器

-

(NSArray

*)popToViewController:(UIViewController

*)viewController

animated:(BOOL)animated

//返回到指定控制器

-

(NSArray

*)popToRootViewControllerAnimated:(BOOL)animated

//返回到根控制器storyboard使用導(dǎo)航控制器

刪除storyboard默認(rèn)的控制器,添加UINavigationController,并設(shè)置為初始控制器。

添加一個(gè)控制器,連接導(dǎo)航控制器的rootviewcontroller屬性

控制器間的跳轉(zhuǎn)可以直接連線,選擇show

同樣支持自動(dòng)型Segue和手動(dòng)型Segue

控制器之間傳遞數(shù)據(jù)和modal方式切換一樣導(dǎo)航欄上按鈕的添加

導(dǎo)航欄上的按鈕類型是UIBarButtonItem

導(dǎo)航欄導(dǎo)航控制器除了管理多個(gè)控制器外,還有一個(gè)到導(dǎo)航欄,相關(guān)屬性:@property(nonatomic,

readonly)

UINavigationBar

*navigationBar

//導(dǎo)航欄

@property(nonatomic,

getter=isNavigationBarHidden)

BOOL

navigationBarHidden

//導(dǎo)航欄隱藏使能導(dǎo)航欄上的數(shù)據(jù)由UINavigationItem對(duì)象管理,其屬性如下:@property(nonatomic,

copy)

NSString

*title

//中間的標(biāo)題

@property(nonatomic,

retain)

UIView

*titleView

//中間的視圖

@property(nonatomic,

retain)

UIBarButtonItem

*backBarButtonItem

//左側(cè)的返回按鈕

@property(nonatomic,

retain)

UIBarButtonItem

*leftBarButtonItem

//左側(cè)自定義按鈕

@property(nonatomic,

copy)

NSArray

*leftBarButtonItems

@property(nonatomic,

retain)

UIBarButtonItem

*rightBarButtonItem

//右側(cè)自定義按鈕

@property(nonatomic,

copy)

NSArray

*rightBarButtonItems導(dǎo)航欄對(duì)象UINavigationBar管理顯示數(shù)據(jù)的方式和導(dǎo)航控制器管理多個(gè)控制器類似,也是用棧的結(jié)構(gòu):@property(nonatomic,

copy)

NSArray

*items

@property(nonatomic,

readonly,

retain)

UINavigationItem

*topItem但通常不直接使用導(dǎo)航欄對(duì)象來(lái)設(shè)置顯示的數(shù)據(jù)UIViewController包含一個(gè)navigationItem屬性:@property(nonatomic,

readonly,

retain)

UINavigationItem

*navigationItem

通過(guò)這個(gè)屬性,能夠直接設(shè)置當(dāng)前頁(yè)面的導(dǎo)航欄數(shù)據(jù)工具欄導(dǎo)航控制器還管理著一個(gè)工具欄,這個(gè)工具欄默認(rèn)是隱藏的@property(nonatomic,

readonly)

UIToolbar

*toolbar

-

(void)setToolbarHidden:(BOOL)hidden

animated:(BOOL)animated

@property(nonatomic,

getter=isToolbarHidden)

BOOL

toolbarHidde

工具欄UIToolBar管理方式導(dǎo)航欄UINavigationBar的管理方式類似UIViewController包含一個(gè)tabBarItem屬性:@property(nonatomic,

readonly,

retain)

UINavigationItem

*navigationItem

通過(guò)這個(gè)屬性,能夠直接設(shè)置當(dāng)前頁(yè)面的工具欄數(shù)據(jù)@property(nonatomic,

retain)

UITabBarItem

*tabBarItem導(dǎo)航控制器子類定義一個(gè)導(dǎo)航控制器子類的好處是:

讓項(xiàng)目中所有的導(dǎo)航控制器都遵循統(tǒng)一的一些行為,應(yīng)讓所有的導(dǎo)航控制器為自定義的UINavigationController的子類,在子類中設(shè)定這些統(tǒng)一的行為。UINavigationBar設(shè)置背景圖片

-

(void)setBackgroundImage:(UIImage

*)backgroundImage

forBarMetrics:(UIBarMetrics)barMetricsUINavigationBar設(shè)置文字屬性

@property(nonatomic,

copy)

NSDictionary

*titleTextAttributes一些控件遵循<UIAppearance>協(xié)議,通過(guò)協(xié)議中的appearance方法能夠返回全局對(duì)象+

(instancetype)appearance通過(guò)全局對(duì)象能夠設(shè)置一些全局的特征設(shè)置導(dǎo)航欄的tintColor[UINavigationBar

appearance].tintColor

=

[UIColor

whiteColor];設(shè)置導(dǎo)航欄按鈕的字體[UIBarButtonItem

appearance]

setTitleTextAttributes:attrDict

forStat

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論