2011-07-26 4 views
0

iPhoneのサンプルを見ていますプログラミングの本の初めに、ボタンを押したときに2つのビューを切り替えるコードがあります。objective-cのsuperviewを削除する

if (self.yellowViewController.view.superview == nil) 
{ 
    if (self.yellowViewController == nil) 
    { 
     YellowViewController *yellowController = 
     [[YellowViewController alloc] initWithNibName:@"YellowView" 
bundle:nil]; 
     self.yellowViewController = yellowController; 
     [yellowController release]; 
    } 
    [blueViewController.view removeFromSuperview]; 
    [self.view insertSubview:yellowViewController.view atIndex:0]; 
} 
else 
{ 
    if (self.blueViewController == nil) 
    { 
     BlueViewController *blueController = 
     [[BlueViewController alloc] initWithNibName:@"BlueView" 
bundle:nil]; 
     self.blueViewController = blueController; 
     [blueController release]; 
    } 
    [yellowViewController.view removeFromSuperview]; 
    [self.view insertSubview:blueViewController.view atIndex:0]; 
} 

それは私には意味をなさないんが、私が持っている問題は、あなたが4つのビューを持っているUISegmentControlでこれを行うだろうか、次のとおりです。ここでは、そのサンプルコードから最初の抜粋です。私はあなたがselectedSegmentを確認し、必要に応じてそのビューを作成できることを知っています。しかし、私の新しいビューをサブビューとして追加するのを助けるために、スーパービューからそれを削除するために最後のビューがどのようなものか分かりましたか?ありがとう!

+0

適切なインデントを行うと、このコードを読みやすくなります。 –

答えて

0

どのビューが割り当てられているかを確認してnilを確認してから削除できます。

4つのビューからどのビューが読み込まれているかを確認し、ビューを削除できます。

1

それぞれのビューをcodeIndex.soに設定すると、そのタグ値で後で取得することができます。これは難解で単純です。

+0

このシナリオでは、ivarに最後に表示されたものが選択されたことを記憶させる必要がありますか?どうも。 – Crystal

0

UIViewの場合、最前面のサブビューは[[myView subviews] lastObject]です。

+0

...非常に危険です。フレームワークや独自のコードでは、いつでも他のビューを上に置くことができます。あなたのコードに時限爆弾を置かないでください。 – Eiko

関連する問題