需要有关transitionFromView:toView的帮助:duration:options:completion:

时间:2013-05-02 12:09:34

标签: ios objective-c uiview

关于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的更新?

2 个答案:

答案 0 :(得分:2)

声明“您有责任适当更新视图控制器以处理更改。”这意味着您必须适当地调用视图层次结构委托方法,例如:

- (void)viewDidLoad;
- (void)viewDidUnload;
- (void)viewWillAppear;
- (void)viewDidDisappear;

其他负责正确视图管理的方法。

以下是some examples

答案 1 :(得分:1)

当我们使用transitionFromView:toView:duration:options:completion:时,我们只是 在视图层次结构中引入toView。但Apple说我们应该处理更新 ViewControllers是这些视图的父级。

在navigationcontroller堆栈中维护viewcontroller ...

对于.ex:如果您的应用程序中有TabController,

在tabIndex 2的某处你需要在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;
                        }
                    }];