2012-10-18 49 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;

这一切似乎有点显而易见,但我正在试图用后退按钮显示导航栏!

相关问题