两个视图控制器之间的争论

时间:2012-10-24 12:55:56

标签: ios ios6 uistoryboard

enter image description here

在我的故事板上(如上所示),我有一个ViewController,它包含一个带注释的MKMapView。这些注释包含一个公开图标,在点击时,应该将用户导航到另一个ViewController。为此,我在视图控制器之间创建了一个push segue。然后我给它一个'showDetail'标识符并实现了以下代码。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    [self performSegueWithIdentifier:@"showDetail" sender:self];
}

但是我收到以下错误。

Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

我哪里错了?我尝试将源UIViewController更改为UINavigationController,但视图只显示为黑屏。

3 个答案:

答案 0 :(得分:41)

最简单的方法是选择要作为导航层次结构根目录的View控制器并选择

Editor > Embed In > Navigation Controller

这会创建新的导航控制器,并为您提供所有内容。

答案 1 :(得分:38)

您实际上必须将UIViewController设置为UINavigationController的根控制器(或者从具有navcontroller的视图控制器推送)。要做到这一点

  • 将新的导航控制器拖到您的故事板中 - 它将通过 默认附加到tableview控制器
  • 删除tableview控制器右键单击导航 控制器,并将“Root View Controller”属性连接到您的 现有的视图控制器
  • 将入口点箭头从视图控制器移动到根目录 视图控制器

答案 2 :(得分:0)

检查以下步骤:  1.单击两个视图控制器之间的连接。  2.单击属性检查器  3.将标识符设置为“showDetail”。  4.保存并运行。