【发布时间】:2019-09-22 05:21:52
【问题描述】:
我正在尝试从 AppDelegate didViewLoadFinished 函数导航,但我无法成功,因为我对 ios 完全陌生。我正在为 ViewControllers 使用情节提要。
我还检查了像这样的其他解决方案:Swift - pushViewController from appDelegate, rootViewController.navigationController is nil 但它并没有解决我的问题。
这是我尝试加载新 ViewController“MultipleMarkersViewController”的方式:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main.storyboard" bundle:nil];
MultipleMarkersViewController *wc=[storyboard instantiateViewControllerWithIdentifier:@"MultipleMarkersView"];
[self.window.rootViewController.navigationController pushViewController:wc animated:YES];
预期的结果是加载新的 ViewController。 但实际结果是“应用程序崩溃”,日志输出如下:
0 CoreFoundation 0x000000010894f6fb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x0000000107ef3ac5 objc_exception_throw + 48
2 UIKitCore 0x00000001119f9624 +[UIStoryboard storyboardWithName:bundle:] + 675
3 Runner 0x00000001060b09bd __57-[AppDelegate application:didFinishLaunchingWithOptions:]_block_invoke + 909
4 Flutter 0x000000010614c9a2 __45-[FlutterMethodChannel setMethodCallHandler:]_block_invoke + 115
5 Flutter 0x0000000106169616 _ZNK5shell21PlatformMessageRou<…>
【问题讨论】:
-
您应该只使用“Main”作为情节提要名称。将“Main.storyboard”替换为“Main”。
-
现在崩溃已解决,但应用程序未导航到下一个 ViewController。可能的原因是什么。
-
其实我是 IOS 的新手,我必须在 Objective-C 中实现它。
-
为什么需要像这样从 appdelegate 导航。如果您需要在启动应用程序后将 MultipleMarkersViewController 显示为第一个视图控制器。然后你可以通过设置为初始视图控制器来轻松地做到这一点。或者如果你想从 rootviewcotnroller 导航,那么首先检查根视图控制器是否有 UInavigationcontroller。
-
非常感谢!问题已解决。
标签: ios objective-c uinavigationcontroller storyboard