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

一、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方式进行切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

house.zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值