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

Jon*_*han 14 ios uistoryboard ios6

在此输入图像描述

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

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

但是我收到以下错误.

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.'
Run Code Online (Sandbox Code Playgroud)

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

Ara*_*and 41

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

Editor > Embed In > Navigation Controller
Run Code Online (Sandbox Code Playgroud)

这将创建新的导航控制器并为您提供所有内容.


Edw*_*dar 38

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

  • 将新的导航控制器拖到故事板中 - 默认情况下会将其附加到tableview控制器
  • 删除tableview控制器右键单击导航控制器,并将"Root View Controller"属性连接到现有的视图控制器
  • 将入口点箭头从视图控制器移动到根视图控制器