pushViewController无法以编程方式使用storyboard

时间:2012-01-09 10:09:30

标签: ios storyboard segue

当我使用segue推送视图(直接在故事板上拖动它)时,它工作正常,并加载下一个视图。但是,当我尝试以编程方式实现所有这些以在我点击PIN的右箭头(在地图中)时推送视图时,我有点困惑:

修改

 -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSLog(@"calloutAccessoryControlTapped: enseigneDeLaStation");
    [self performSegueWithIdentifer:@"You identifier" sender:self];
}

我收到了这个错误:

Receiver Type 'MyFirstViewController' for instance message does not declare a method with selector performSegueWithIdentifer:sender:

2 个答案:

答案 0 :(得分:5)

您必须使用UIViewController的实例方法performSegueWithIdentifier:sender:。它以编程方式从视图控制器的storyboard文件中启动具有指定标识符的segue。

Here is the documentation

示例代码如下:(假设您在视图控制器中调用它。

[self performSegueWithIdentifier:@"Your identifier" sender:self];

因此,对于您的代码,它将是:

-(IBAction)goToNextView{
    NSLog(@"The button is clicked");
    [self performSegueWithIdentifier:@"Your identifier" sender:self];
}

不要忘记在界面构建器中设置segue标识符。另外,请确保在代码和界面构建器中都具有相同的标识符。

答案 1 :(得分:3)

Malek是对的。 Pfitz示例确实返回

  

接收器类型'MyFirstViewController'实例消息未声明具有选择器的方法performSegueWithIdentifer:sender:

这是由于一个错字。正确的方法是

[self performSegueWithIdentifier:@"You identifier" sender:self];