2012-10-18 99 views
2

我有一個帶有一些按鈕的UIViewController的故事板。其中一個按鈕爲UINavigationController提供了模式繼承,NavController中嵌入了UITableViewController。當我點擊主屏幕上的按鈕時,它前進到NavController,但沒有後退按鈕。UINavigationController不顯示返回按鈕

那麼如何獲得後退按鈕?我嘗試了一些東西,但沒有運氣。

感謝您的幫助!

回答

6

如果您以模態方式呈現導航控制器,那麼tableview控制器是新導航控制器推送的唯一視圖控制器。在這種情況下不會也不應該是後退按鈕。

你最好通過tableview控制器嚮導航欄添加一個取消/完成按鈕,這會關閉模態視圖。

在你的tableView控制器viewDidLoad:方法:

UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonTapped:)]; 
self.navigationItem.leftBarButtonItem = done; 

//Release done if not using ARC 

然後加入(最簡單的實現)一駁回方法:

- (void)doneButtonTapped:(id)sender { 

    [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 

} 
+0

是的,那會很好。實際上,我想要一個主頁按鈕,讓用戶回到他們的主屏幕。甚至可能是一個家的形象。 – LilMoke

0

UINavigationViewController只管理一堆視圖控制器。您將viewController推入堆棧,當您點擊「返回」時,您將彈出堆棧中的視圖。

由於您以模態方式呈現UINavigationController,因此它不知道之前呈現的內容。獲得所需行爲的正確方法是將主UIViewController設置爲UINavigationController的根視圖控制器。當用戶點擊一個按鈕時,您將新的UITableViewController推入UINavigationController的堆棧。

+0

我想我明白了,但是如果我在我的UIViewComtroller上有很多按鈕,這個工作會如何?我將會有幾個按鈕,每個按鈕都有些不同。 – LilMoke

+0

它應該工作,只要您正確設置您的MVC設計。根據按下的按鈕,您可以推送不同的視圖控制器或使用不同的數據初始化公共視圖控制器。 – Matias

+0

好吧,以確保我正確理解你。我應該改變我的UIViewController,使UINavController成爲根視圖控制器。但是,如何讓導航控制器顯示tableviewcontroller? – LilMoke

1

你的UITableViewController子類是UINavigationController的根視圖控制器。因此,後退按鈕不會自動顯示。如果點擊表格行將第二個View Controller推入堆棧,那麼第二個View Controller將在其導航欄中顯示一個後退按鈕。所以,這是預期的行爲。

你可以通過創建一個(你需要一個看起來像後退按鈕的圖像,或者在代碼中繪製一個圖像)來自己添加一個「後退」按鈕,並將其添加爲TableViewController的navigationItem的leftBarButtonItem,但我會不這樣做。呈現模式的視圖控制器不應該「返回」。該按鈕應該像「關閉」,「解除」或「取消」。

0

在我的情況下,我有一個rootviewcontoller沒有可見的導航欄,但推送的viewcontollers都需要一個帶有後退按鈕的導航欄,但他們沒有顯示。我正在使用Xcode 6.1。在viewDidAppear爲rootviewcontroller,我設置:

self.title = @「a title」; self.navigationController.navigationBarHidden = YES;

在viewDidLoad中,需要導航欄顯示的推送視圖控制器,我設置爲: self.navigationController.navigationBarHidden = NO; self.navigationItem.hidesBackButton = NO;

這一切似乎有點顯而易見,但我正在試圖用後退按鈕顯示導航欄!

相關問題