標籤:uiviewcontroller vc 管理 ios開發
建立一個控制器
控制器常見的建立方式有以下幾種//通過storyboard建立//直接建立ViewController *vc = [[ViewController alloc] init];//指定xib檔案來建立ViewController *vc = [ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
通過storyboard建立控制器
//先載入storyboard檔案(Test是storyboard的檔案名稱)UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];//接著初始化storyboard中的控制器 初始化“初始控制器”(箭頭所指的控制器)ViewController *vc = [storyboard instantiateInitialViewController];//通過一個標識初始化對應的控制器ViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"vc"];
ViewController的view的建立
控制器view的消極式載入
控制器的view是消極式載入的:用到時再載入
可以用isViewLoaded方法判斷一個UIViewController的view是否已經被載入
控制器的view載入完畢就會調用viewDidLoad方法
多控制器
一個iOS的app很少只由一個控制器組成,除非這個app極其簡單
當app中有多個控制器的時候,我們就需要對這些控制器進行管理
有多個view時,可以用一個大的view去管理1個或者多個小view
控制器也是如此,用1個控制器去管理其他多個控制器
比如,用一個控制器A去管理3個控制器B、C、D
控制器A被稱為控制器B、C、D的“父控制器”
控制器B、C、D的被稱為控制器A的“子控制器”
//為了便於管理控制器,iOS提供了2個比較特殊的控制器UINavigationControllerUITabBarController
UINavigationController的子控制器
UINavigationController的使用步驟初始化UINavigationController設定UIWindow的rootViewController為UINavigationController根據具體情況,通過push方法添加對應個數的子控制器
UINavigationController以棧的形式儲存子控制器@property(nonatomic,copy) NSArray *viewControllers;@property(nonatomic,readonly) NSArray *childViewControllers;//使用push方法能將某個控制器壓入棧- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;使用pop方法可以移除控制器//將棧頂的控制器移除- (UIViewController *)popViewControllerAnimated:(BOOL)animated;//回到指定的子控制器- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;//回到根控制器(棧底控制器)- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
修改導覽列的內容
導覽列的內容由棧頂控制器的navigationItem屬性決定
UINavigationItem有以下屬性影響著導覽列的內容//左上方的返回按鈕@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;//中間的標題視圖@property(nonatomic,retain) UIView *titleView;//中間的標題文字@property(nonatomic,copy) NSString *title;//左上方的視圖@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;UIBarButtonItem *rightBarButtonItem //右上方的視圖@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
UIViewController的生命週期
#import "ZLOneViewController.h"@implementation ZLOneViewController/** * view載入完畢就會調用 */- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"視窗一view載入完畢就會調用---viewDidLoad");}/** * view即將顯示到window上就會調用 */- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"視窗一view即將顯示到window上就會調用---viewWillAppear:");}/** * view顯示完畢就會調用(已經顯示到視窗上) */- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"視窗一view顯示完畢就會調用(已經顯示到視窗上)---viewDidAppear:");}/** * view即將從window上移除就會調用(即將看不見) */- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; NSLog(@"視窗一view即將從window上移除就會調用(即將看不見)---viewWillDisappear:");}/** * view從window上完全移除就會調用(完全看不見) */- (void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; NSLog(@"視窗一view從window上完全移除就會調用(完全看不見)---viewDidDisappear:");}/** * view即將銷毀時就會調用 */- (void)viewWillUnload{ [super viewDidUnload]; NSLog(@"視窗一view即將銷毀時就會調用---viewWillUnload");}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
iOS開發 - UIViewController控制器管理