0

我有一个包含 4 个视图的选项卡栏控制器。3个视图是非常基本的。只是一个带有数据的表格视图(调用这些视图之一 SimpleTableView)。第 4 个视图指向一个导航控制器,其视图上有两个按钮(让我们将此视图称为 MainNavView)。两个按钮都指向不同的视图(我们称它们为 ViewA 和 ViewB),当按下导航栏上的后退按钮时,用户可以使用两个按钮(MainNavView)返回到视图。效果很好。

现在这是我的问题。我希望 SimpleTableView 中的 didSelectRowAtIndexPath 显示导航控制器中的 ViewA。当用户登陆该页面时,他可以按导航栏上的后退按钮并出现 MainNavView。

从 MainNavView 导航到 ViewA 是通过(推)segue 完成的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil];
}

MainStoryBoard 包含从 MainNavView 内的 tableviewcell 到 ViewA 的 segue,称为“segueIdentifier”。

我尝试从 SimpleTableView 中的 tableviewcell 到 ViewA 进行另一个 segue 并再次执行此代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil];
}

但后来我得到了这个错误

NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController

现在,当我将 SimpleTableView 嵌入导航控制器时,这个错误很容易修复,但这不是我想要的,因为后退按钮将用户返回到 SimpleTableView 而不是 MainNavView。

我希望一切都清楚,有人可以帮助我解决这个导航问题。这是否可以通过模态序列而不是推送来实现?

4

1 回答 1

0

您不能从不是 的控制器使用 push segue UINavigationController您应该使用直接指向. 我刚试了一下,完美无缺!ViewA

从用户的角度来看,push segue 是从/到同一视图层次结构的显式转换......我认为使用来自另一个选项卡的 push segue 可能会使用户迷失方向......

于 2013-09-03T15:06:44.197 回答