transitionFromViewController:toViewController 方法的使用

1 背景

   iOS 5.0 以前,我们在一个视图控制器中会用addSubView方法来添加很多子View,并进行对这些子View的控制

但是,这样做,有一个问题:

     一个UIViewController 的View可能有很多的小的子View。这些子View很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登入失败的view,上传附件成功的提示view,网络失败的提示view等等。但是虽然这些view很少出现,但是我们却常常一直把他们放在内存中,另外,当收到内存警告时,我们只能自己手动把这些view从super view中去掉


2 替代方法

就是用transitionFromViewController:toViewController  来替代


苹果的API增加了addChildViewController方法,并且希望我们在使用addsubView时,同时调用[self addChildViewController:child] 方法将subview 对应的viewController也加到当前ViewController的管理中。


对于那些当前暂时不需要显示的subView,之通过addChildViewController把subViewController加进去;需要显示的时候再调用transitionFromViewController:toViewController方法。将其添加进入底层的ViewController中。


这样做的好处:

 1、无疑,对页面中的逻辑更加的分明了。相应的View对应相应的ViewController

  2、当某个子View没有显示时,将不会被Load,减少了内存的使用

 3、当内存紧张时,没有Load的view将首先被释放,优化了程序的内存释放机制


3 transitonFromViewController:toViewController:duration:options:animations:compltion


-  (void)transitionFromViewController:(UIViewController *) fromViewController  toViewController: (UIViewController *) toViewController  duration:(NSTimeInterval) duration options:(UIViewAnimationOptions) options animations:(viod(^)(void)animations )animations completion:(void(^)(BOOL finished))completion 


在两个子视图控制器中转换,支持iOS 5.0 以及以后的版本

fromViewController:当前显示在父视图控制器中的子视图控制器

toViewController: 将要显示的子视图控制器

duration:完成过渡的时间;单位:秒

options:指定的过渡效果

animations:转换过程中的动画,是个Block块操作

completion:过渡完成后,执行的Block块操作

该方法执行完成后,fromVIewController指代的视图控制器的view将从界面消失;toViewController所指代的视图控制器的View将被载入到页面中


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值