在我的故事板上(如上所示),我有一个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,但视图只显示为黑屏。
答案 0 :(得分:41)
最简单的方法是选择要作为导航层次结构根目录的View控制器并选择
Editor > Embed In > Navigation Controller
这会创建新的导航控制器,并为您提供所有内容。
答案 1 :(得分:38)
您实际上必须将UIViewController设置为UINavigationController的根控制器(或者从具有navcontroller的视图控制器推送)。要做到这一点
答案 2 :(得分:0)
检查以下步骤: 1.单击两个视图控制器之间的连接。 2.单击属性检查器 3.将标识符设置为“showDetail”。 4.保存并运行。