[英]How to push UIViewController to UINavigationController in iOS5 using stroyboards?
[英]How to push UIViewController with replaced UINavigationController
我有一個繪制自定義背景的自定義UINavigationController
。 在根視圖 controller 上訪問self.navigationController
時已經設置了導航 controller。現在我想做的是推送一個新視圖 controller,但將新視圖 controller 中的導航 controller 替換為默認視圖(沒有自定義)背景)。
基本上,新視圖 controller 正在呈現導航欄為半透明的圖像。 因為它從根視圖 controller 重用了導航 controller(帶有自定義背景),所以最終效果是帶有自定義背景的半透明導航欄。
我知道在將新視圖 controller 作為模式視圖呈現時,我可以替換導航欄。 但是推新view controller的時候能換掉嗎?
我試過這樣的事情,但這段代碼沒有效果:
LTImageViewController* controller = [[LTImageViewController alloc] init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:self];
[navController pushViewController:controller animated:YES];
您不能只是將視圖 controller 推送到任何舊導航控制器的堆棧上。 (好吧,你可以,但你不會走得太遠。)導航 controller 應該是應用程序 window 的根視圖 controller。如果你想使用你的自定義導航 controller,你應該用你的自定義替換現有導航 controller版本。 你會做這樣的事情:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
delegate.window.rootViewController = [[MyCustomNavController alloc] init];
在 UINavigationController 中推送視圖 controller 時,它會創建一個堆棧,我認為我們無法在另一個視圖中推送導航 controller。
您可以做一件事以模態方式顯示您的 viewController 並將 TransitionStyle 更改為 UIModalTransitionStyleCoverVertical
可能有幫助
如果您的問題只是導航欄的樣式/顏色/圖像,則在viewWillAppear:
中您可以設置您的 viewControllers:
[self.navigationController.navigationBar setBackgroundImage:yourImage
forBarMetrics:UIBarMetricsDefault];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.