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

在这里输入图像说明

在我的故事板上(如上所示),我有一个ViewController,其中包含注释的MKMapView。 这些注释拥有一个披露图标,当点击时,应该将用户导航到另一个ViewController。 为此,我在视图控制器之间创build了一个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,但该视图只是显示为黑屏。

你实际上必须设置你的UIViewController作为UINavigationController的根控制器(或者从一个带有navcontroller的视图控制器中通过)。 要做到这一点

  • 拖动一个新的导航控制器到你的故事板 – 它将默认被附加到一个tableview控制器
  • 删除tableview控制器右键单击navgiation控制器,并将“Root View Controller”属性连接到现有的视图控制器
  • 将入口点箭头从视图控制器移到根视图控制器

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

 Editor > Embed In > Navigation Controller 

这将创build新的导航控制器,并为您提供一切。

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