0604導(dǎo)航控制器生命周期_第1頁(yè)
0604導(dǎo)航控制器生命周期_第2頁(yè)
0604導(dǎo)航控制器生命周期_第3頁(yè)
0604導(dǎo)航控制器生命周期_第4頁(yè)
0604導(dǎo)航控制器生命周期_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余18頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

控制器管理李南江掌握控制器以及view的多種創(chuàng)建方式UINavigationController的簡(jiǎn)單使用:添加\移除子控制器UINavigationBar內(nèi)容的設(shè)置控制器的生命周期方法如何創(chuàng)建一個(gè)控制器控制器常見(jiàn)的創(chuàng)建方式有以下幾種通過(guò)storyboard創(chuàng)建直接創(chuàng)建NJViewController

*nj

=

[[NJViewController

alloc]init];指定xib文件來(lái)創(chuàng)建NJViewController

*nj

=

[[NJViewController

alloc]initWithNibName:@”NJViewController"

bundle:nil];通過(guò)storyboard創(chuàng)建控制器先加載storyboard文件(Test是storyboard的文件名)UIStoryboard*storyboard=[UIStoryboard

storyboardWithName:@"Test"

bundle:nil];接著初始化storyboard中的控制器初始化“初始控制器”(箭頭所指的控制器)NJViewController

*nj

=

[storyboardinstantiateInitialViewController];通過(guò)一個(gè)標(biāo)識(shí)初始化對(duì)應(yīng)的控制器NJViewController

*nj

=

[storyboardinstantiateViewControllerWithIdentifier:@”nj"];MJViewController的view的創(chuàng)建loadViewYES根據(jù)loadView的代碼實(shí)現(xiàn)去創(chuàng)建NOstoryboard根據(jù)storyboard的描述去創(chuàng)建YESNONJViewController.xibnibName根據(jù)nibName對(duì)應(yīng)xib的描述去創(chuàng)建YESNJView.xibNOYES根據(jù)NJView.xib的描述去創(chuàng)建NOYES根據(jù)NJViewController.xib的描述去創(chuàng)建NO創(chuàng)建一個(gè)空的view控制器view的延遲加載控制器的view是延遲加載的:用到時(shí)再加載可以用isViewLoaded方法判斷一個(gè)UIViewController的view是否已經(jīng)被加載控制器的view加載完畢就會(huì)調(diào)用viewDidLoad方法多控制器一個(gè)iOS的app很少只由一個(gè)控制器組成,除非這個(gè)app極其簡(jiǎn)單當(dāng)app中有多個(gè)控制器的時(shí)候,我們就需要對(duì)這些控制器進(jìn)行管理有多個(gè)view時(shí),可以用一個(gè)大的view去管理1個(gè)或者多個(gè)小view控制器也是如此,用1個(gè)控制器去管理其他多個(gè)控制器比如,用一個(gè)控制器A去管理3個(gè)控制器B、C、D控制器A被稱為控制器B、C、D的“父控制器”控制器B、C、D的被稱為控制器A的“子控制器”為了便于管理控制器,iOS提供了2個(gè)比較特殊的控制器UINavigationControllerUITabBarControllerUINavigationController利用UINavigationController,可以輕松地管理多個(gè)控制器,輕松完成控制器之間的切換,典型例子就是系統(tǒng)自帶的“設(shè)置”應(yīng)用UINavigationController的簡(jiǎn)單使用UINavigationController的使用步驟初始化UINavigationController設(shè)置UIWindow的rootViewController為UINavigationController根據(jù)具體情況,通過(guò)push方法添加對(duì)應(yīng)個(gè)數(shù)的子控制器UINavigationController的子控制器UINavigationController以棧的形式保存子控制器@property(nonatomic,copy)NSArray*viewControllers;@property(nonatomic,readonly)NSArray*childViewControllers;使用push方法能將某個(gè)控制器壓入棧-(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated;使用pop方法可以移除控制器將棧頂?shù)目刂破饕瞥?(UIViewController*)popViewControllerAnimated:(BOOL)animated;回到指定的子控制器-(NSArray*)popToViewController:(UIViewController*)viewControlleranimated:(BOOL)animated;回到根控制器(棧底控制器)-(NSArray*)popToRootViewControllerAnimated:(BOOL)animated;UINavigationController的view結(jié)構(gòu)導(dǎo)航控制器的view棧頂控制器的view導(dǎo)航條如何修改導(dǎo)航欄的內(nèi)容導(dǎo)航欄的內(nèi)容由棧頂控制器的navigationItem屬性決定UINavigationItem有以下屬性影響著導(dǎo)航欄的內(nèi)容左上角的返回按鈕@property(nonatomic,retain)UIBarButtonItem*backBarButtonItem;中間的標(biāo)題視圖@property(nonatomic,retain)UIView*titleView;中間的標(biāo)題文字@property(nonatomic,copy)NSString*title;左上角的視圖@property(nonatomic,retain)UIBarButtonItem*leftBarButtonItem;UIBarButtonItem*rightBarButtonItem右上角的視圖@property(nonatomic,retain)UIBarButtonItem*rightBarButtonItem;什么是SegueStoryboard上每一根用來(lái)界面跳轉(zhuǎn)的線,都是一個(gè)UIStoryboardSegue對(duì)象(簡(jiǎn)稱Segue)Segue的屬性每一個(gè)Segue對(duì)象,都有3個(gè)屬性唯一標(biāo)識(shí)@property(nonatomic,readonly)NSString*identifier;來(lái)源控制器@property(nonatomic,readonly)idsourceViewController;目標(biāo)控制器@property(nonatomic,readonly)iddestinationViewController;Segue的類型根據(jù)Segue的執(zhí)行(跳轉(zhuǎn))時(shí)刻,Segue可以分為2大類型自動(dòng)型:點(diǎn)擊某個(gè)控件后(比如按鈕),自動(dòng)執(zhí)行Segue,自動(dòng)完成界面跳轉(zhuǎn)手動(dòng)型:需要通過(guò)寫代碼手動(dòng)執(zhí)行Segue,才能完成界面跳轉(zhuǎn)自動(dòng)型Segue按住Control鍵,直接從控件拖線到目標(biāo)控制器點(diǎn)擊“登錄”按鈕后,就會(huì)自動(dòng)跳轉(zhuǎn)到右邊的控制器如果點(diǎn)擊某個(gè)控件后,不需要做任何判斷,一定要跳轉(zhuǎn)到下一個(gè)界面,建議使用“自動(dòng)型Segue”手動(dòng)型Segue按住Control鍵,從來(lái)源控制器拖線到目標(biāo)控制器手動(dòng)型的Segue需要設(shè)置一個(gè)標(biāo)識(shí)(如右圖)在恰當(dāng)?shù)臅r(shí)刻,使用perform方法執(zhí)行對(duì)應(yīng)的Segue[selfperformSegueWithIdentifier:@"login2contacts"sender:nil];//Segue必須由來(lái)源控制器來(lái)執(zhí)行,也就是說(shuō),這個(gè)perform方法必須由來(lái)源控制器來(lái)調(diào)用如果點(diǎn)擊某個(gè)控件后,需要做一些判斷,也就是說(shuō):滿足一定條件后才跳轉(zhuǎn)到下一個(gè)界面,建議使用“手動(dòng)型Segue”performSegueWithIdentifier:sender:利用performSegueWithIdentifier:方法可以執(zhí)行某個(gè)Segue,完成界面跳轉(zhuǎn)接下來(lái)研究performSegueWithIdentifier:sender:方法的完整執(zhí)行過(guò)程[self

performSegueWithIdentifier:@“l(fā)ogin2contacts”

sender:nil];//這個(gè)self是來(lái)源控制器根據(jù)identifier去storyboard中找到對(duì)應(yīng)的線,新建UIStoryboardSegue對(duì)象設(shè)置Segue對(duì)象的sourceViewController(來(lái)源控制器)新建并且設(shè)置Segue對(duì)象的destinationViewController(目標(biāo)控制器)performSegueWithIdentifier:sender:調(diào)用sourceViewController的下面方法,做一些跳轉(zhuǎn)前的準(zhǔn)備工作并且傳入創(chuàng)建好的Segue對(duì)象-(void)prepareForSegue:(UIStoryboardSegue*)seguesender:(id)sender;//這個(gè)sender是當(dāng)初performSegueWithIdentifier:sender:中傳入的sender調(diào)用Segue對(duì)象的-(void)perform;方法開(kāi)始執(zhí)行界面跳轉(zhuǎn)操作取得sourceViewController所在的UINavigationController調(diào)用UINavigationController的push方法將destinationViewController壓入棧中,完成跳轉(zhuǎn)Sender參數(shù)的傳遞[self

performSegueWithIdentifier:@“l(fā)ogin2contacts”

sender:@“jack”];-(void)prepareForSegue:(UIStoryboardSegue*)seguesender:(id)sender;控制器的數(shù)據(jù)傳遞控制器之間的數(shù)據(jù)傳遞主要有2種情況:順傳和逆?zhèn)黜槀骺刂破鞯奶D(zhuǎn)方向:

A

C數(shù)據(jù)的傳遞方向:

A

C數(shù)據(jù)的傳遞方式:在A的prepareForSegue:sender:方法中根據(jù)segue參數(shù)取得destinationViewController,也就是控制器C,直接給控制器C傳遞數(shù)據(jù)(要在C的viewDidLoad

溫馨提示

  • 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)論