1

我正在做一个基于导航的应用程序。让我稍微解释一下应用程序。在程序加载表视图中将显示 3 个选项,例如:

  • 酒店
  • 餐厅
  • 咖啡店

如果用户选择上述任何选项,它将导航到另一个表视图并显示子选项。它会持续到 6 到 7 个级别。所以我在didSelectRowAtIndexPath:tableView的类(Sales)中创建了它自己的对象,并使用[self.navigationController pushViewController:myViewController animated:YES];我创建另一个视图并绑定数据库中的数据。它对我来说很好,但问题是。我没有得到导航栏上自动显示的“返回”按钮。

我的实现是这样的

@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

像这样,我正在显示所有级别。但是当我在任何选项中导航时,我没有得到后退按钮。(通常,如果我导航到 Hotel,它会显示一个 detailView 并在导航栏上显示一个后退按钮,但在这种情况下不会发生这种情况)。我认为问题在于创建同一类的对象并显示它,但我无法创建如此多的类和视图(总共约 43 个级别)。如何解决此问题(如何在导航栏上显示返回按钮)?我的方法是好的还是有针对此问题的替代解决方案?提前致谢。

4

2 回答 2

2

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

  • 检查视图控制器是否具有title. 这是子视图控制器可见时后退按钮上显示的文本。如果该文本是nil没有后退按钮。
于 2012-06-18T18:36:01.023 回答
2

当您创建“返回”按钮时,它用于“下一个”级别。因此“当前导航控制器”的后退按钮是在上一级创建的……是的,这有点令人困惑。

好吧,我在“ iLessons iLearned: How to Define Custom backBarButtonItem ”上写了一篇博客,但这里是创建后退按钮的示例代码:

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

现在只需确保您在正确的导航控制器上使用它!

于 2012-06-18T19:26:47.587 回答