问题已解决!请参阅底部的代码。接收器MainVIewController没有segue iOS
我想在两个控制器之间传递一些数据。我有加载GoogleMap的MainViewController类。点击每个GMap标记的自定义信息窗口,我想打开新的窗口,并显示地点详情。 我的故事板:
Segue公司被评为:showPlaceDetails:
几种方法写着:
- (void) mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker {
[self performSegueWithIdentifier:@"showPlaceDetails" sender: nil];
}
(我还试图用sender: [marker snippet]
)。
我prepareForSegue方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showPlaceDetails"]) {
//[[segue destinationViewController] setDelegate:self];
PlaceDetailsViewController *destViewController = segue.destinationViewController;
//Pass some data
}
}
但我得到的消息: 终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: '接收器(RelaxInKZViewController)具有标识符没有赛格瑞 'showPlaceDetails''
我做下列步骤操作:
- 添加新的视图控制器上STOR yboard。
- 添加名为PlaceDetailsViewController的Objective-C类。
- 更改自定义类新加入的VC为“PlaceDetailsViewController”
- 添加该代码
- 清除模拟器的数据和清洁工程
并没有什么。我希望你能帮助我:) Thx,Artem。
Mr_bem一直劝我拒绝塞格斯和使用pushViewController方法。这很好!
UIStoryboard *iPhoneStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
PlaceDetailsViewController *destViewController = [iPhoneStoryboard instantiateViewControllerWithIdentifier:@"PlaceDetailsViewController"];
destViewController.placeData = marker.placeData;
[self.navigationController pushViewController:destViewController animated:NO];
您是否已将navigationController添加到您的storyBoard中,然后使RelaxInKZViewController成为其根视图控制器?如果你这样做,我提供的代码应该工作..或者只是改变模式的segue的类型。 是的,你在做什么是正确的,只是一个小错误,一旦修复,它应该是真棒! – Albara
按住控制键,然后从导航控制器拖动到您的RelaxInKZViewController,然后选择赛格类型“根控制器”。这就是它,使用我的答案中提供的代码,你应该很好(Y) – Albara
尝试删除'.navigationController'? – Albara