2011-07-29 3 views
0

私はiOSを学び、例を取り上げています - 私はほとんどそれを理解しています。ここでは、私は質問をフォローアップするいくつかのコードです:なぜあなたはそれを表示している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が表示されているかどうかを確認しています。そうでない場合は、インスタンス化されているかどうかを確認します。そうでない場合は、スーパービューからblueViewControllerを最初に削除してインスタンス化して表示します。

これまでのところすべて良いです。

は、ここで私は理解していないものだ - なぜ、次のやっている:

[blueViewController viewWillAppear:YES];

[yellowViewController viewWillDisappear:YES];

我々がblueViewControllerではなく黄色に消えるはず私には思えます。

私は本当に説明を感謝します。ありがとう。

答えて

0

これらの通話は自分で行うべきではありません。iOSフレームワークによって自動的に行われます。したがって、あなたのviewWill…viewDid…の呼び出しはすべて不要で、削除することができます。

関連する問題