1

当我使用 segues(直接通过在情节提要上拖动它)推送视图时,它工作正常,并加载下一个视图。但是,当我尝试以编程方式实现所有这些以在单击 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:
4

2 回答 2

5

您必须使用UIViewControllers 实例方法performSegueWithIdentifier:sender:。它以编程方式使用视图控制器的故事板文件中的指定标识符启动 segue。

这是文档

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

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

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

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

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

于 2012-01-09T10:28:13.840 回答
3

马利克是正确的。菲茨的例子确实返回

Receiver Type 'MyFirstViewController' 例如消息未使用选择器 performSegueWithIdentifer:sender 声明方法:

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

[self performSegueWithIdentifier:@"You identifier" sender:self];
于 2012-02-08T22:07:46.610 回答