0

メインビューに他の2つのコントローラー(AとB)ビューを表示する方法を管理するコントローラー(MAIN)を使用しています。MAINコントローラービューで、メインビューxibにボタンが作成されています。ボタンはAビューとBビューの上にある必要があります。

これが私が必要とするビュー階層構造です:

MAIN.VIEW
      |------A or B view (index 0)
      |------BUTTON      (index 1)

ここで、AとBをMAINに作成する方法を説明します。

//MAIN CONTROLLER viewDidLoad
- (void)viewDidLoad {
    [super viewDidLoad];

    self.A = [[A alloc] init];
    self.B = [[B alloc] init];

    //Start from A view visible in MAIN
    [self.view insertSubview:self.A.view atIndex:0]; 
}

特定のアクション呼び出しの後、コントローラーBビューを挿入し、Aを削除したいと思います。transitionFromViewについて読み、次のように使用しようとしました。

[UIView transitionFromView:self.A.view
                    toView:self.B.view
                  duration:1.0
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:^(BOOL finished) {
                    if (finished) {
                        //nothing for now...
                    }
                }]; 

ここでの問題は、フリップアニメーションの後、Bビューがボタンの上にあり、階層内のAの場所を正確に占めていないことです(Aはインデックス0にありました)

このコードを完了ブロックに追加できます:

[self.view sendSubviewToBack:self.B.view];

しかし、私はそれが少しトリッキーな解決策だと思います:P(そしてそれは悪いグラフィック効果でアニメーションの終わりに効果的に現れるように見えるので、それも良い解決策ではありません...)

AとBがインデックス0に配置されていることを確認するための最良の方法はどれですか?

4

1 に答える 1

1

SDKのバグである可能性があります。OpenRadarには、まさにこの動作に関するバグレポートがあります。

于 2011-04-16T14:59:29.173 に答える