2011-07-29 47 views
0

我正在学习iOS并通过一个例子工作 - 我主要理解这个例子。这里有一些代码,我会跟进一个问题:当您显示ViewController时,为什么不显示ViewController的视图?向后看。

- (IBAction) switchViews:(id)sender{

[UIView beginAnimations:@"View Flip" context:nil]; 
[UIView setAnimationDuration:.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

if (self.yellowViewController.view.superview == nil) { 
    if (self.yellowViewController == nil) { 
     YellowViewController *yellowController = [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil]; 
     self.yellowViewController = yellowController; 
     [yellowController release]; 
    } 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 

    [blueViewController viewWillAppear:YES]; 
    [yellowViewController viewWillDisappear:YES]; 


    [blueViewController.view removeFromSuperview]; 
    [self.view insertSubview:yellowViewController.view atIndex:0]; 

    [yellowViewController viewDidDisappear:YES]; 
    [blueViewController viewDidAppear:YES]; 

这是我的理解。动画清晰。

我们正在检查是否显示了yellowViewController。如果不是的话,我们检查一下它是否被实例化。如果没有,我们实例化它,然后显示它,首先从SuperView中删除blueViewController。

目前为止都不错。

这就是我不明白 - 为什么在执行以下操作:

[blueViewController viewWillAppear:YES];

[yellowViewController viewWillDisappear:YES];

在我看来,我们应该消失blueViewController,而不是黄色。

我真的很感激解释。谢谢。

回答

0

你不应该自己做这些调用,它们是由iOS框架自动完成的。因此,您所有的viewWill…viewDid…调用是不必要的,可以删除。

相关问题