我有一个带有一些按钮的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