0

UINavigationControllerカスタム背景を描画するカスタムがあります。そのナビゲーション コントローラーはself.navigationController、ルート ビュー コントローラーにアクセスするときに既に設定されています。ここでやりたいことは、新しいビュー コントローラーをプッシュすることですが、新しいビュー コントローラーのナビゲーション コントローラーをデフォルトのもの (カスタム背景なし) に置き換えることです。

基本的に、新しいビュー コントローラーはナビゲーション バーが半透明の画像を表示します。ルート ビュー コントローラーから (カスタム背景を持つ) ナビゲーション コントローラーを再利用するため、最終的な効果は、カスタム背景を持つ半透明のナビゲーション バーになります。

新しいビュー コントローラーをモーダル ビューとして表示するときに、ナビゲーション バーを置き換えることができることはわかっています。しかし、新しいView Controllerをプッシュするときに置き換えることはできますか?

私はこのようなことを試しましたが、このコードは効果がありません:

LTImageViewController* controller = [[LTImageViewController alloc] init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:self];
[navController pushViewController:controller animated:YES];
4

3 に答える 3

2

ビュー コントローラーを古いナビゲーション コントローラーのスタックにプッシュすることはできません。(できますが、それほど遠くまではいきません。) nav コントローラーは、アプリのウィンドウのルート ビュー コントローラーにする必要があります。カスタム ナビゲーション コントローラーを使用する場合は、既存のナビゲーション コントローラーをカスタム バージョンに置き換える必要があります。次のようにします。

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
delegate.window.rootViewController = [[MyCustomNavController alloc] init];
于 2012-04-05T12:53:24.293 に答える
1

UINavigationController でビュー コントローラーをプッシュすると、スタックが作成されます。別のナビゲーション コントローラーをプッシュすることはできないと思います。

viewController をモーダルに表示し、TransitionStyle を UIModalTransitionStyleCoverVertical に変更することができます

役立つかもしれません

于 2012-04-05T12:54:32.387 に答える
0

問題がナビゲーションバーのスタイル/色/画像だけである場合viewWillAppear:は、viewControllers で次のように設定できます。

 [self.navigationController.navigationBar setBackgroundImage:yourImage                             
                                               forBarMetrics:UIBarMetricsDefault];
于 2012-04-05T13:02:54.120 に答える