UIViewController
UIViewController繼承了UIResponder,而UIResponder繼承了NSObject,UIViewController是所有視圖控制器的父類。
在MVC模式中,UIViewController扮演C(controller)的角色,控制視圖以及模型的操作。
如果新建工程或新建ViewController時關(guān)聯(lián)了.xib文件稿湿,則在viewDidLoad方法中進行一些初始化工作,如果手動加載.xib視圖押赊,則需要從loadView中進行視圖控制器的創(chuàng)建工作饺藤。
ViewController的簡單生命周期:
loadView:創(chuàng)建視圖控制器(如果不是從.xib加載)
viewDidLoad:視圖已加載
viewWillAppear:視圖加載前運行
viewWillDisappear:視圖消失前(被關(guān)閉或覆蓋)運行
willRotateToInterfaceOrientation:duration:開始旋轉(zhuǎn)時運行
didRotateToInterfaceOrientation:旋轉(zhuǎn)結(jié)束時運行
loadView和viewDidLoad的區(qū)別:
loadView在視圖初始化的時候調(diào)用,應(yīng)用開啟后只調(diào)用一次
viewDidLoad在每次進入一個視圖的時候都會調(diào)用
presentViewController 跳轉(zhuǎn)到下一個Controller
dismissViewController 隱藏當(dāng)前Controller
UINavigationController
帶有導(dǎo)航條的Controller,使用堆棧的方式進行管理Controller
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController *home = [[ViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:home];
home.title = @"Dribbble";
[self.window setRootViewController:navController];
[self.window makeKeyAndVisible];
return YES;
}
Controller 進行跳轉(zhuǎn)
ShotDetailsController *shotsDetailVC = [[ShotDetailsController alloc] init];
shotsDetailVC.shotDetilsDic = [shots objectAtIndex:indexPath.row];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
backItem.title = @"返回";
self.navigationItem.backBarButtonItem = backItem;
[self.navigationController pushViewController:shotsDetailVC animated:YES];
pushViewControllerAnimated:方法將視圖控制器推入棧頂流礁,
popViewControllerAnimated:方法將視圖控制器彈出堆棧涕俗。
UITabBarController
UITabBarController是選項卡欄導(dǎo)航控制器,顯示效果是在頁面底部有多個選項卡神帅,通過點擊不同選項卡可以在不同的ViewController之間進行切換再姑。
這種對象的層次結(jié)構(gòu)至少包含6個對象:
一個UITabBarController;
兩個UIViewController找御;
一個UITabBar元镀;
兩個UITabBarItem;
UITabBarController是選項卡欄視圖控制器霎桅,UITabBar是底部兩個UITabBarItem的容器栖疑,管理兩個UITabBarItem,每個UITabBarItem對應(yīng)一個UIViewController滔驶,然后每個UIViewController都有自己的視圖和視圖控制器遇革。
UITabBarController中有一個viewControllers屬性,這是一個NSArray揭糕,包含選項卡控制器的視圖控制器