簡體   English   中英

UINavigationController沒有顯示后退按鈕

[英]UINavigationController not showing back button

我有一個帶有一些按鈕的UIViewController的故事板。 其中一個按鈕對UINavigationController進行模態轉換,NavController中嵌入了UITableViewController。 當我單擊主屏幕上的按鈕時,它前進到NavController,但沒有后退按鈕。

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

謝謝您的幫助!!

如果您以模態方式呈現導航控制器,則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

然后添加(最簡單的實現)一個dismiss方法:

- (void)doneButtonTapped:(id)sender {

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

}

UINavigationViewController僅管理一堆視圖控制器。 您將viewController推入堆棧,當您點擊“返回”時,您將從堆棧中彈出一個視圖。

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

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

您可以通過創建一個(您需要一個看起來像后退按鈕的圖像,或在代碼中繪制一個)來添加一個“后退”按鈕,並將其添加為TableViewController的navigationItem的leftBarButtonItem,但我不會這樣做。 以模態方式呈現的視圖控制器不應該“返回”。 該按鈕應該類似於“關閉”,“關閉”或“取消”。

在我的情況下,我有一個rootviewcontoller,它沒有可見的導航欄,但推送的viewcontollers都需要一個帶后退按鈕的導航欄,但它們沒有顯示。 我在Xcode 6.1工作。 在rootviewcontroller的viewDidAppear中,我設置:

self.title = @“a title”; self.navigationController.navigationBarHidden = YES;

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

這一切看起來都有點明顯,但我繞圈試圖用后退按鈕顯示導航欄!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM