需要关于transitionFromView的帮助:toView:duration:options:completion:
关于transitionFromView:toView:duration:options:completion: Apple doc在最后几行中说:
此方法仅修改其视图层次结构中的视图。 它不会以任何方式修改您的应用程序的视图控制器。 例如,如果使用此方法更改由视图控制器显示的根视图,则有责任适当地更新视图控制器以处理更改。
如果一个ViewController有2个全屏大小的视图一次显示一个,那么没有问题:
[transitionFromView:self.view toView:self.view2 …
但是这意味着你有责任适当地更新视图控制器来处理更改 ?
如果我这样做:
secondViewController *sVc = [[secondViewController alloc]init]; [transitionFromView:self.view toView:sVc.view...
我的责任是如何更新视图控制器来适当地处理更改 ? 或者如何更新ViewController?
UPDATE
我创build了一个单一的视图项目,添加第二个VC然后在第一个VCbutton点击我做到了这一点:
self.svc = [[secondVC alloc]init]; [UIView transitionFromView:self.view toView:self.svc.view duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {}];
… secondVC viewDidLoad正在其nslog正在工作。
那么如何处理viewcontroller的更新呢?
声明“您有责任适当地更新视图控制器来处理更改”。 这意味着您必须适当地调用视图层次结构委托方法,例如:
- (void)viewDidLoad; - (void)viewDidUnload; - (void)viewWillAppear; - (void)viewDidDisappear;
和其他方法负责正确的视图pipe理。
这里有一些 例子 。
当我们使用transitionFromView:toView:duration:options:completion:
我们只能在视图层次结构中查看。 但苹果说,我们应该处理这些视图的父视图的ViewControllers的更新。
在导航控制器堆栈中维护视图控制器…
对于.ex:如果您的应用程序中有TabController,
在tabIndex两处的某处,你需要在tabindex 1处显示viewcontroller的视图,那么当你使用transitionfromview
方法时,你应该更新你的tabIndex
[UIView transitionFromView:fromView toView:toView duration:0.5 options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown) completion:^(BOOL finished) { if (finished) { tabBarController.selectedIndex = controllerIndex; } }];