2011-07-18 213 views
0

當我嘗試呈現一個模態視圖控制器時,它覆蓋了我的導航控制器的導航欄。有小費嗎?謝謝。模態視圖導航控制器欄

UPDATE(含代碼):

ComposeText *compText = [[ComposeText alloc] initWithNibName:@"ComposeText" bundle:[NSBundle mainBundle]]; 
compNavController = [[UINavigationController alloc] initWithRootViewController:compText]; 
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:compNavController action:@selector(compDoneTapped:)]; 
compNavController.navigationItem.rightBarButtonItem = doneButton; 
[self presentModalViewController:compNavController animated:YES]; 
compText.title = @"Compose"; 
[doneButton release]; 

一切似乎是爲了,但按鈕依然沒有出現在導航欄上。

回答

1

這就是它應該做的。如果你想要一個導航欄,以模態方式呈現一個新的UINavigationController,並將它的根視圖控制器設置爲你的modalViewController。

0

UINavigationController有它自己的方法來顯示另一個viewController。

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 

它使用堆棧來推送新的viewController,以便它可以處理按鈕的導航。

1

你需要問自己的問題是:「爲什麼我要顯示我的導航欄」。如果是讓用戶訪問某些按鈕,那麼這是錯誤的原因。模態視圖控制器可以完全控制屏幕,並且不允許用戶在控制器被解散之前操縱應用中的其他任何東西。如果你不希望像Cyprian所建議的那樣做,並在你的導航堆棧上推視圖控制器。

如果它只是一個可視化的東西(標誌...)複製它在你的模態視圖控制器。

+0

我需要顯示對應用程序導航至關重要的按鈕 - 只需發佈內容的按鈕和取消按鈕即可。 presentModalViewController動畫似乎最有意義。除了將新視圖推到導航控制器的堆棧外,還有更好的選擇嗎? –

相關問題