关于transitionFromView:toView:duration:options:completion: Apple doc在最后几行说明了这一点:
此方法仅修改视图层次结构中的视图。确实如此 不以任何方式修改应用程序的视图控制器。对于 例如,如果使用此方法更改a显示的根视图 查看控制器,您有责任更新视图 控制器适当地处理变化。
如果ViewController有2个全屏大小的视图,则一次显示一个,然后没有问题:
[transitionFromView:self.view toView:self.view2 ...
但是这意味着您有责任更新视图控制器以适应更改吗?
如果我这样做:
secondViewController *sVc = [[secondViewController alloc]init];
[transitionFromView:self.view toView:sVc.view...
我的如何适当更新视图控制器来处理更改?或者如何更新ViewController?
更新
我创建了一个单独的视图项目,然后在按钮点击时在firstVC中添加secondVC,我做了这个:
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的更新?
答案 0 :(得分:2)
声明“您有责任适当更新视图控制器以处理更改。”这意味着您必须适当地调用视图层次结构委托方法,例如:
- (void)viewDidLoad;
- (void)viewDidUnload;
- (void)viewWillAppear;
- (void)viewDidDisappear;
其他负责正确视图管理的方法。
答案 1 :(得分:1)
当我们使用transitionFromView:toView:duration:options:completion:
时,我们只是
在视图层次结构中引入toView
。但Apple说我们应该处理更新
ViewControllers是这些视图的父级。
在navigationcontroller堆栈中维护viewcontroller ...
对于.ex:如果您的应用程序中有TabController,
在tabIndex 2的某处你需要在tabindex 1上显示viewcontroller的视图,
那么您应该在使用transitionfromview
方法
[UIView transitionFromView:fromView
toView:toView
duration:0.5
options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown)
completion:^(BOOL finished) {
if (finished) {
tabBarController.selectedIndex = controllerIndex;
}
}];