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