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将被载入到页面中


你可能感兴趣的:(ios,xcode,界面)