三种ViewController跳转的异同

1. - (void)presentViewController:(UIViewController*)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

<pre>
MainVC *mainVC = [[MainVC alloc] init];
[self presentViewController:mainVC animated:YES completion:nil];
</pre>

这种方式一般出现在需要使用者完成某件事情,如输入密码、增加资料等操作后,才能(回到跳转前的控制器)继续。例如系统的WIFI连接输入密码提示。默认动画是从下至上。

2. - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

这种方式一般是使用者浏览资料,继而可以前进到下一个页面或回到上一个页面。默认动画是从右至左。

3. - (void)addChildViewController:(UIViewController *)childController

这个方法出现在iOS5以后,通过它即使不使用NavigationController也能够实现view hierarchy。有以下优点:

  • 页面逻辑很清晰,相应的View对应相应的ViewController。
  • 当某个子View没有显示时,将不会被Load,减少了内存的使用。
  • 当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /* UIViewController is a generic controller base class th...
    DanDanC阅读 1,844评论 0 2
  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 1,583评论 2 4
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,515评论 1 14
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,453评论 2 4
  • 正能量积极的人往往喜欢靠近与他相同的人,对于那些满满负能量没有上进心的人是看不上的,因为这样我希望自己能够一直不...
    凤儿_c427阅读 156评论 0 0