0

关于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?

更新

我创建了一个单视图项目,添加 secondVC 然后在 firstVC 中点击按钮我这样做了:

self.svc = [[secondVC alloc]init]; 

[UIView transitionFromView:self.view toView:self.svc.view duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {}];

... secondVC viewDidLoad 正在运行,它的 nslog 正在运行。

那么如何处理视图控制器的更新呢?

4

2 回答 2

2

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

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

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

下面是一些 例子

于 2013-05-02T12:57:10.837 回答
1

当我们使用时,transitionFromView:toView:duration:options:completion:我们只toView在视图层次结构中提出。但 Apple 表示我们应该处理作为这些视图的父级的 ViewControllers 的更新。

在导航控制器堆栈中维护视图控制器...

对于 .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;
                        }
                    }];
于 2013-05-02T13:04:15.790 回答