iOS開發 - UIViewController控制器管理

來源:互聯網
上載者:User

標籤: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控制器管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.