0

私のアプリは、いくつかのボタンを持つビューから始まります。押されたボタンに応じてさまざまなビューに移動し、さまざまなパラメーターを渡したいと思います。

私のストーリーボードは次のようになります。

ここに画像の説明を入力 .

ご覧のとおり、メイン ビューでボタンを押すと、ナビゲーション コントローラーに埋め込まれたテーブル ビューが呼び出されます。そして、これは私に多くの問題を引き起こしています!

最初は、正しいアプローチを選択したのか、それともビューではなくナビゲーション コントローラーを使用してアプリを起動する必要があるのか​​わかりません (この解決策を試しましたが、ホームページではそうではありません)。ナビゲーション バーが必要であり、それを表示するかどうかは、視覚的にあまり良くありません)。

私の最初のアプローチの実現可能性を確認した場合、いくつかのパラメーターを渡して目的のビューに移動するにはどうすればよいですか?

- - - 編集:

私はついに実用的な解決策を見つけました。Navigation コントローラーは、アプリケーションの最初のコントローラーです。ビューは標準のセグエで接続されています。

私のホームビューでは:

- (void)viewWillAppear:(BOOL)animated
{
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

私のテーブルビューでは:

- (void)viewWillAppear:(BOOL)animated
{
    [[self navigationController] setNavigationBarHidden:NO animated:YES];
}

このように、ボタンを押すと、新しいビューがアニメーションで表示されます。これは、ナビゲーション バーと同じです。テーブル ビューで [戻る] ボタンを押すと、同じことが起こります。

コード行はもう必要ありません!!!

完璧にするためにできる唯一の中毒は、アプリが最初にロードされたときに、アニメーションなしでホームビューのナビゲーションバーを非表示にすることです.

やっさ

4

1 に答える 1

1

非常によく似たケースで、ナビゲーション コントローラーをストーリーボードの初期コントローラーとして配置し、ホームページがこのナビゲーション コントローラーのルート ビュー コントローラーになるようにしました。

したがって、View Controller スタックは次のようになります。

ストーリーボード - HomeViewController - YourTableViewController

ホームページのナビゲーション バーを非表示にする場合は、次を使用してコードから非表示/表示するだけです。

[self.navigationController setNavigationBarHidden:YES animated:NO];

ビューコントローラーで表示したい場合は、次を使用します。

[self.navigationController setNavigationBarHidden:NO animated:NO];

これらのコード行は、ビューの表示に関連するメソッド、つまり viewDidAppear: または prepareForSegue: メソッドに移動する必要があります。

編集:次のView Controllerをプッシュする際に、アプリに遅延を追加しました:

[self.navigationController setNavigationBarHidden:NO animated:YES];

    // Showing navigation bar animation
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
        [self.navigationController pushViewController:viewController animated:YES];         
    });
于 2012-02-10T16:16:03.190 に答える