UIViewController生命周期及应用界面切换

来源:互联网 发布:无网络怎么安装手写板 编辑:程序博客网 时间:2024/06/05 14:45

一、UIViewController生命周期

iOS应用程序有本生的生命周期外,界面中UIViewController也有生命周期,其生命周期如下图所示:

生命周期

上图中,给出了一个视图控制器的视图可能发生的状态转换,图中并非所有的will回调方法都有成对的did回调方法,你需要去确保开始一个will回调方法处理。是否以同样的did回调结束这个过程,还是以相反的will回调方法去结束。

二、iOS应用界面切换

iOS中有两对界面切换方法分别是:push&pop以及present&dismiss

1、push&pop

AnotherViewController *pushView = [[AnotherViewController alloc]init];[self.navigationController pushViewController:pushView animated:YES];[self.navigationController popViewControllerAnimated:YES];

如图:上面三条语句以push的方式进行界面切换,首先要保证视图的容器在一个UINavigationController中,这样位于UINavigationController中的视图能够以push入栈和pop出栈的方式进行界面的切换。与此同时界面返回的代码是:

[self.navigationController popViewControllerAnimated:YES]

这个方法直接pop出位于栈顶的UIViewController,在调用此方法时候,需要注意的是先对self.navigationController进行判断是否不为空。才能进行pop操作,另外还有两种UIViewController出栈的方式:

[self.navigationController popToRootViewControllerAnimated:YES];[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]

前一个方法可以直接pop到根ViewController,第二个方法可以跳到指定的ViewController中。

2、present&dismiss方法

iOS5后的界面切换方法是:

      AnotherViewController *pushView = [[AnotherViewController alloc]init];    [self presentViewController:pushView animated:YES completion:nil];

这种方法切换的话整个界面都会被新界面给替换,界面返回的方法为:

    [self dismissViewControllerAnimated:YES completion:nil];

需要提醒的是iOS5之前界面切换的方法有所不同:

    [self presentModalViewController:(nonnull UIViewController *) animated:(BOOL)]    [self dismissModalViewControllerAnimated:(BOOL)]

3、总结

需要注意的是以上方法必须成对出现,当采用pop方式要用push返回,不能用dismiss方法,同样的当采用present方式要用dismiss方法返回,不能用pop方法。同时如果要支持iOS5之前的设备用present方法时,需要采用presentModal方式进行切换。

0 0