导航到导航控制器中的视图

时间:2013-09-03 12:37:40

标签: objective-c uinavigationcontroller uistoryboard segue uistoryboardsegue

我有一个标签栏控制器,其中包含4个视图。 3个观点非常基础。只是一个包含数据的tableview(调用其中一个视图SimpleTableView)。第4个视图指向导航控制器,其视图上有两个按钮(让我们将此视图称为MainNavView)。两个按钮都指向不同的视图(让我们称之为ViewA和ViewB),当按下导航栏上的后退按钮时,用户可以使用两个按钮(MainNavView)返回视图。效果很好。

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

使用(推送)segue:

从MainNavView导航到ViewA
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil];
}

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

我尝试将另一个segue从SimpleTableView中的tableviewcell转换为ViewA并再次执行此代码:

- (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。

我希望一切都清楚,有人可以帮我解决这个导航问题。这可能是模态segue而不是push吗?

1 个答案:

答案 0 :(得分:0)

您不能使用非UINavigationController的控制器中的push segue,您应该使用直接指向ViewA模态 segue。我刚尝试过,它完美无缺!

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