8

私はプッシュスルーするビューの数を持つストーリーボード iOS アプリを持っています。「Shows Toolbar」オプションが選択された UINavigationController があり、ビュー階層全体に表示されます。

ビュー フローが 3 つのビュー、A、B、および C であるとします。

View A --(push)--> View B --(push)--> View C

ビュー A は通常のビュー コントローラーで、ツールバーのボタンはビュー B をプッシュするために使用されます。ビュー B はテーブル コントローラーなので、ここでツールバーを非表示にします。ビュー C は、ビュー A と同様の別のビューであり、ツールバーを表示する必要があります。

Xcode/ストーリーボードでは、ビュー BI で「プッシュ時に下部バーを非表示にする」を選択すると、まさにそれが実行されます。ビュー B では下部バーが非表示になります。同様に、「下部バー」選択オプションで「なし」を選択すると、何もありません。ビュー B のバー。良い。

ここに私の問題があります: 私が何をしても、ビュー B のいずれかのオプションを使用しても、ツールバーはビュー C に戻りません。手動で「ツールバー」に設定した場合。

何か案は?

4

2 に答える 2

17

@Zoltánが言ったように、ストーリーボードは完全な答えを提供しません。

viewDidLoad または viewWillAppear で self.navigationController.toolbarHidden = YES/NO を設定することは機能しますが、醜い (ビュー遷移アニメーション中にツールバーの代わりに黒い四角形が表示されます)。

ストーリーボードの「プッシュ時に非表示」オプションのアニメーションの滑らかさを模倣するために、ビュー B コントローラー (およびビュー C の逆) に対して行ったことは次のとおりです。

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

- (void)viewWillDisappear:(BOOL)animated
{
    [self.navigationController setToolbarHidden:NO animated:YES];
}
于 2012-08-07T07:14:26.937 に答える
2

ストーリーボードだけでできるとは思えません。ただし、常に表示するように設定し、表示するすべてのビューにボタンを配置して、self.navigationController.toolbarHidden = YES; を呼び出すことができます。ツールバーを表示したくないビューコントローラーがロードされたとき。その後、ツールバーが必要な別の VC が表示された場合は、toolbarHidden を NO に設定します。

于 2012-08-07T06:53:57.587 に答える