首页 > 代码库 > 控制器管理

控制器管理

1、如何创建一个控制器

a、通过storyboard创建:

//先加载storyboard文件(Test是storyboard的文件名)UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];//接着初始化storyboard中的控制器,初始化“初始控制器”(箭头所指的控制器)YLViewController *yl = [storyboard instantiateInitialViewController];//通过一个标识初始化对应的控制器YLViewController *yl = [storyboard instantiateViewControllerWithIdentifier:@”yl"];

 b、直接创建

YLViewController *yl = [[YLViewController alloc] init];

c、指定xib文件来创建

YLViewController *mj = [[YLViewController alloc] initWithNibName:@"YLViewController" bundle:nil];

 2、控制器View的延迟加载

控制器的View是延迟加载的,也就是说用到时再加载

可以用isViewLoaded方法判断一个UIViewController的View是否已经被加载,控制器的View加载完毕就会调用viewDidLoad方法

3、多控制器管理概念

界面中有多个View时,可以用一个大的View作为父View进行统一管理,方便所有View的属性(位置、宽高)的控制。当一个APP中有多个控制器时,也需要一个控制器来统一管理,父控制器和子控制器由此而生。

为了方便管理控制器,IOS提供了2个比较特殊的控制器(当然我们完全可以自定义它们)

UINavigationController、UITabBarController。

UINavigationController的简单使用

a、初始化UINavigationController

b、设置UIWindow的rootViewController为UINavigationController

c、根据具体情况,通过push方法添加对应个数的子控制器

4、UINavigationController的子控制器

UINavigationController以栈的形式保存子控制器

  @property(nonatomic,copy) NSArray *viewControllers;

  @property(nonatomic,readonly) NSArray *childViewControllers;

使用push方法能将某个控制器压入栈

使用pop方法可以移除控制器

回到指定的子控制器popToViewController

回到根控制器popToRootViewControllerAnimated

5、如何修改导航栏的内容