当我使用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:
答案 0 :(得分:5)
您必须使用UIViewController
的实例方法performSegueWithIdentifier:sender:
。它以编程方式从视图控制器的storyboard文件中启动具有指定标识符的segue。
示例代码如下:(假设您在视图控制器中调用它。
[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];