0

私はUITabBarControllerとUINavigationControllerのパラダイムに精通しており、さまざまなタブに新しいView Controllerを提示したり、新しいViewControllerをプッシュ/ポップしたりします。私がよく知らないのは、Flipboardのようなアプリです。Flipboardは、3つのストーリーのプレビューを表示します。ストーリーの1つをタップすると、基本的に画面を占めるストーリーが遷移します。このようなことをするために、どのようなビュー階層を設定しているのでしょうか。私の最初の本能は、ビューを互いに重ね合わせて、1つを非表示にして表示することです。このアプローチについて私が気に入らないのは、特にIBで多くの要素が互いに重なり合っている場合は、雑然としているように見えることです。もっと良い方法はありますか?新しいviewControllerを作成して、次のようなことを行う方がよいでしょうか。

- (IBAction)showDetailView:(id)sender {
   [self.view addSubview:detailController.view]; // have the detailController.view as an ivar so we can reference it later
}

- (IBAction)removeDetailView:(id)sender {
   [detailControllerIvar.view removeFromSuperview];
}

これが基本的な質問である場合は申し訳ありません。ViewControllerを使用して、プッシュ/ポップ、タブプレス、モーダル表示などで独自のビューを表示するだけではない状況については、あまり詳しくありません。addSubviewは、あまりよく知らないので、しませんでした。これが良い習慣なのか悪い習慣なのかわからない。ありがとう!

4

1 に答える 1

1

を使用したいtransitionFromViewController:toViewController。サブビューの追加/削除を処理します。ここに例があります...

[self addChildViewController:toViewController];
[fromViewController willMoveToParentViewController:nil];

[self transitionFromViewController:fromViewController
                  toViewController:toViewController
                          duration:1.0f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{}
                        completion:^(BOOL completed){
                            [fromViewController removeFromParentViewController];
                            [toViewController didMoveToParentViewController:self];
                        }];
于 2012-12-04T04:50:13.507 に答える