問題已解決!請參閱底部的代碼。接收器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