13

在此处输入图像描述

在我的故事板上(如上所示),我有一个 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,但视图随后仅显示为黑屏。

4

3 回答 3

40

最简单的方法是选择您想要成为导航层次结构根的视图控制器并选择

Editor > Embed In > Navigation Controller

这将创建新的导航控制器并为您连接所有内容。

于 2012-12-30T03:20:32.383 回答
38

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

  • 将一个新的导航控制器拖到您的故事板中 - 默认情况下,它将附加到一个 tableview 控制器
  • 删除 tableview 控制器右键单击导航控制器,并将“根视图控制器”属性连接到现有视图控制器
  • 将入口点箭头从视图控制器移动到根视图控制器
于 2012-10-24T13:04:57.457 回答
0

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

于 2015-03-06T11:37:06.797 回答