gpt4 book ai didi

ios - 接收器 MainVIewController 没有 segue iOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:41 25 4
gpt4 key购买 nike

问题已解决!请参阅底部的代码。

我想在 2 个 Controller 之间传递一些数据。我有加载 GoogleMap 的 MainViewController 类。单击每个 GMap 标记的自定义信息窗口后,我想打开包含地点详细信息的新窗口。我的 Storyboard是: Storyboard

Segue 被命名为:showPlaceDetails:

Segue

写了几个方法:

- (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’的 segue”

我做了这些步骤:

  1. 在 Storyboard上添加新的 View Controller 。
  2. 添加名为 PlaceDetailsViewController 的 Objective-C 类。
  3. 将新添加的 VC 的自定义类更改为“PlaceDetailsViewController”
  4. 添加该代码
  5. 清除模拟器的数据并清理项目

什么也没有。我希望你能帮帮我 :)谢谢,阿尔乔姆。


Mr_bem 建议我拒绝 segues 并使用 pushViewController 方法。很好!

UIStoryboard *iPhoneStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
PlaceDetailsViewController *destViewController = [iPhoneStoryboard instantiateViewControllerWithIdentifier:@"PlaceDetailsViewController"];
destViewController.placeData = marker.placeData;
[self.navigationController pushViewController:destViewController animated:NO];

最佳答案

您正在使用 Push segue,这只能通过 navigationController 执行,例如:

[self.navigationController performSegueWithIdentifier:@"showPlaceDetails" sender: nil];

请注意,在推送的 ViewController 之前应该有一个导航 Controller 。

或者如果你愿意,你可以将其类型更改为模态,一切都应该适合你(Y)

更新

好的,这就是我的建议,删除 segue,将 PlaceDetailsViewController 的 storyboardID 从 IB 更改为 PlaceDetailsViewController,然后添加此代码

    - (void) mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker {
PlaceDetailsViewController *destViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PlaceDetailsViewController"];
[self.navigationController pushViewController:destViewController animated:YES]
se
}

这一定行得通!哈哈!

关于ios - 接收器 MainVIewController 没有 segue iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com