我有以下代码,用相应的容器视图控制器替换容器视图中的另一个视图。这是从Apple文档复制的。transitionFromViewController视图不出现
编辑:苹果文档Creating Custom Container View Controllers
- (void)transitionToViewController:(UIViewController*)toViewController {
toViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.childViewController willMoveToParentViewController:nil];
[self addChildViewController:toViewController];
// [self.view addSubview:toViewController.view];
toViewController.view.frame = CGRectOffset(self.view.bounds, self.view.frame.size.width, 0);
[self transitionFromViewController:self.childViewController
toViewController:toViewController
duration:0.5
options:0
animations:^{
toViewController.view.frame = self.view.bounds;
}
completion: ^(BOOL finished) {
NSLog(@"finished: %d", finished);
[self.childViewController removeFromParentViewController];
[toViewController didMoveToParentViewController:self];
self.childViewController = toViewController;
}];
}
当这被执行,则toViewController.view实际上并没有出现。但是,viewWillAppear和viewDidAppear正被调用到ViewController.view中。在完成块中,完成的值为FALSE。所以有些东西不能正常工作。
我知道transitionFromViewController会将ViewController.view添加到视图层次结构中。如果我取消注释addSubview这一行,以便手动添加它,则视图确实会出现,但视图中的外观方法会多次调用。在这种情况下,完成块中的完成值为TRUE。
WelcomeViewController viewWillAppear
WelcomeViewController viewWillAppear
WelcomeViewController viewDidAppear
finished: 1
WelcomeViewController viewDidAppear
我敢肯定,我不应该基于其他几个示例手动将视图添加到视图层次结构中。为什么它不工作?
你有参考苹果的代码吗? – 2013-05-03 14:28:50