iOS基礎 - 控制器管理

1、Container

一個iOSapp不多隻由一個ViewController組成,除非這個app極其簡單。當app中有多個ViewController的時候,咱們就須要對這些ViewController進行管理app

容器:負責展現一個或者多個ViewController,並管理這些View Controller的視圖生命週期性能

大部分容器自己也是一個ViewController, 被容器管理的這些控制器能夠稱爲容器的子控制器(ChildViewController),而容器能夠被稱爲父控制器(parentViewController)spa

也有極少數容器不是ViewController,好比UIPopoverController,其繼承於NSObject對象

經常使用的ContainerUITabbarController、UINavigationController繼承

2、Container的特徵

能夠添加ChildViewController, 移除ChildViewController,切換ChildViewController的顯示,生命週期

持有全部ChildViewController的實例(通常存在NSArray)事件

負責ChildViewController的生命週期方法的調用圖片

(viewWillAppear,viewDidAppear,viewWillDisaapper,viewDidDisappear),以及旋轉事件的傳遞it

3、UITabBarController

一個UITabBarControllerview由兩部分組成io

上面部分用來容納子控制器的view

下面部分是一個UITabBar對象,會根據子控制器的tabBarItem屬性生成相應的圖標和標題

4、UITabBarController添加子控制器

經過設置viewControllers屬性或者addChildViewController方法能夠添加子控制器

NSArray *viewControllers

- (void)addChildViewController:(UIViewController *)childController

5、UITabBarItemUITabbar

UIViewControllertabBarItem屬性決定了UITabBar顯示的內容

使用系統自帶的UITabBarItem樣式:

controller.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1] autorelease];

本身設置UITabBarItem的標題和圖片:

controller.tabBarItem.title = @More

// controller.title也能夠用於設置標題

controller.tabBarItem.image = [UIImage imageNamed:@more];

設置UITabBarItem右上角的紅色數字

controller.tabBarItem.badgeValue = @10;

6、UINavigationController

UINavigationController也是容器的一種,負責子控制器之間的跳轉

UINavigationController以棧的形式保存子控制器,這裏的棧實際上是個NSArray對象,只有位於棧頂的子控制器的view纔是可見的

初始化UINavigationController時,須要傳入一個UIViewController實例做爲根控制器,這個根控制器永遠處於棧底(若是棧中只有一個對象,那麼根控制器也處於棧頂)

將某個UIViewController壓入棧時,控制器的視圖會從窗口右側滑入;出棧時,棧頂的控制器會被移除,其下的控制器的視圖會從窗口左側滑入

經常使用屬性:

UIViewController *topViewController 處於棧頂的子控制器

NSArray *viewControllers 棧,存放着全部的子控制器

7、UINavigationController結構

UINavigationControllerview包括了兩大部分:

上面是UINavigationBar

下面是topViewControllerviewtopViewControllernavigationItem屬性決定了UINavigationBar顯示的內容

8、UINavigationBar的標題

注意:UINavigationItem並非UIView的子類

9、UINavigationItem

除了titleUINavigationItem還有一些屬性可以影響UINavigationBar的顯示內容

UIBarButtonItem *backBarButtonItem 左上角的返回按鈕

UIView *titleView   中間的標題視圖

UIBarButtonItem *leftBarButtonItem  左上角的視圖

UIBarButtonItem *rightBarButtonItem  右上角的視圖

10、UINavigationBarUINavigationItem

UINavigationController添加子控制器

UINavigationControllerpushViewController:animated:方法能夠將一個控制器壓入棧中

子控制器都有個navigationController屬性,能夠獲取當前的UINavigationController對象

假如從子控制器c1跳轉到子控制器c2,能夠這樣作:

[c1.navigationController pushViewController:c2 animated:YES];

相關文章
相關標籤/搜索