首页 > 代码库 > iOS应用程序之控制器管理
iOS应用程序之控制器管理
- 控制器以及view的多种创建方式
- UINavigationController的简单使用:添加\移除子控制器
- UINavigationBar内容的设置
- 控制器的生命周期方法
一、控制器以及view的多种创建方式
1??控制器的创建方式
-直接创建
ViewController *test = [[ViewController alloc] init];
-指定xib文件来创建
ViewController *test = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
-通过storyboard创建
先加载storyboard文件(Test是storyboard的文件名)
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
•接着初始化storyboard中的控制器
初始化“初始控制器”(箭头所指的控制器)
ViewController *test = [storyboard instantiateInitialViewController];
通过一个标识初始化对应的控制器
ViewController *mj = [storyboard instantiateViewControllerWithIdentifier:@”test"];
2??View加载的方式(MJ老师的一个图就明白了)
•控制器的view是延迟加载的:用到时再加载
•可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
•控制器的view加载完毕就会调用viewDidLoad方法
二、UINavigationController的简单使用:添加\移除子控制器
1??利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用
2??UINavigationController的使用步骤
-初始化UINavigationController
-设置UIWindow的rootViewController为UINavigationController
-根据具体情况,通过push方法添加对应个数的子控制器
三、UINavigationBar内容的设置
•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;
改变内容
//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;
四、ViewController的生命周期
tep1:initWithNib viewController 会进行alloc,并init.
step2: loadView 在这里会看它的子类是否有重写这个函数,如果重写了则调用子类的,否则就调用她自己的。注意,这个时候视图还是没有没加载进来的哦。
step3:viewDidLoad 这个时候视图已经存在了。可以在这里添加你想要添加的UI控件了。
step4:viewWillAppear 视图将出现在屏幕上了
step5:viewDidAppear 视图已经成功在屏幕上渲染完成了
step6:viewWillDisappear 视图将要消失了
step7:viewDidDisappear 视图从屏幕上消失了
step8:viewDidUnLoad 当发生内存警告的时候,如果本视图不是当前正在显示的视图,则会执行这个函数。将子视图释放。
step9:dealloc 释放viewController
而view的生命周期则是step3_step8.
iOS应用程序之控制器管理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。