当同一个类被重用导航器不显示后退按钮(Navigation controller not displ

2019-10-16 21:21发布

我在做一个基于导航应用。 让我来解释一下有关应用程序的一点点。 在程序加载表视图将显示3个选项,如:

  • 旅馆
  • 餐馆
  • 咖啡店

如果用户选择任何上述选项,它将导航到另一个表视图,并显示子选项。 它会继续向上,到6〜7级。 所以,我在didSelectRowAtIndexPath:对的tableView的类(销售部)我创造了它自己的对象,并使用[self.navigationController pushViewController:myViewController animated:YES]; 我创建了另外的看法,从数据库将数据绑定。 它的工作为我好,UT的问题。 我没有得到的“返回”按钮即automaticaly显示在导航栏上。

我的实现是这样的

@implementation Sales

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {
 Sales *myViewController  = [[Sales alloc] initWithNibName:@"Sales"];
 [self.navigationController pushViewController:myViewController animated:YES];
 //Do other stuffs here
}

@end

像这样,我显示的所有级别。 但是,当我的任何选项内导航,我没有得到一个返回按钮。 (通常,如果我定位到酒店,它会显示一个的DetailView,并显示在导航栏上后退按钮,但在这种情况下,这是不会发生)。 我认为这个问题是创建相同的类的对象,并显示它,但我不能创造这样的一些类和视图(约43水平的总)。 我怎样才能解决这个问题(我怎样才能显示回导航栏上的按钮)? 我的方法是很好的一种或是否有此问题的任何其他解决方案? 提前致谢。

Answer 1:

您的方法推同一类的视图控制器是好的。 误差必须在其他地方。

  • 检查视图控制器有一个title 。 这是后退按钮所示,当子视图控制器是可见的文本。 如果该文本是nil不会有任何后退按钮。


Answer 2:

当你创建一个“后退”按钮,它是“下一个”的水平 。 因此,“当前导航控制器”的后退按钮在以前的水平创造了...是的,这是一个有点混乱。

好了,我的博客上讲述这个在“ iLessons iLearned:如何定义自定义backBarButtonItem ”,但这里的后退按钮创建示例代码:

- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *backButton =
  [[UIBarButtonItem alloc]
    initWithTitle:@"My Back"
    style:UIBarButtonItemStyleBordered
    target:nil
    action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
}

现在,只要确保你在正确的navigationController使用它!



文章来源: Navigation controller not displaying back button when same class is reused