我有一個帶有一些按鈕的UIViewController的故事板。其中一個按鈕爲UINavigationController提供了模式繼承,NavController中嵌入了UITableViewController。當我點擊主屏幕上的按鈕時,它前進到NavController,但沒有後退按鈕。UINavigationController不顯示返回按鈕
那麼如何獲得後退按鈕?我嘗試了一些東西,但沒有運氣。
感謝您的幫助!
我有一個帶有一些按鈕的UIViewController的故事板。其中一個按鈕爲UINavigationController提供了模式繼承,NavController中嵌入了UITableViewController。當我點擊主屏幕上的按鈕時,它前進到NavController,但沒有後退按鈕。UINavigationController不顯示返回按鈕
那麼如何獲得後退按鈕?我嘗試了一些東西,但沒有運氣。
感謝您的幫助!
如果您以模態方式呈現導航控制器,那麼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];
}
UINavigationViewController只管理一堆視圖控制器。您將viewController推入堆棧,當您點擊「返回」時,您將彈出堆棧中的視圖。
由於您以模態方式呈現UINavigationController,因此它不知道之前呈現的內容。獲得所需行爲的正確方法是將主UIViewController設置爲UINavigationController的根視圖控制器。當用戶點擊一個按鈕時,您將新的UITableViewController推入UINavigationController的堆棧。
你的UITableViewController子類是UINavigationController的根視圖控制器。因此,後退按鈕不會自動顯示。如果點擊表格行將第二個View Controller推入堆棧,那麼第二個View Controller將在其導航欄中顯示一個後退按鈕。所以,這是預期的行爲。
你可以通過創建一個(你需要一個看起來像後退按鈕的圖像,或者在代碼中繪製一個圖像)來自己添加一個「後退」按鈕,並將其添加爲TableViewController的navigationItem的leftBarButtonItem,但我會不這樣做。呈現模式的視圖控制器不應該「返回」。該按鈕應該像「關閉」,「解除」或「取消」。
在我的情況下,我有一個rootviewcontoller沒有可見的導航欄,但推送的viewcontollers都需要一個帶有後退按鈕的導航欄,但他們沒有顯示。我正在使用Xcode 6.1。在viewDidAppear爲rootviewcontroller,我設置:
self.title = @「a title」; self.navigationController.navigationBarHidden = YES;
在viewDidLoad中,需要導航欄顯示的推送視圖控制器,我設置爲: self.navigationController.navigationBarHidden = NO; self.navigationItem.hidesBackButton = NO;
這一切似乎有點顯而易見,但我正在試圖用後退按鈕顯示導航欄!
是的,那會很好。實際上,我想要一個主頁按鈕,讓用戶回到他們的主屏幕。甚至可能是一個家的形象。 – LilMoke