gpt4 book ai didi

ios - 启动后立即添加 View 时出现 "Application windows are expected to have a root view controller"消息,仅限 iOS 9

转载 作者:行者123 更新时间:2023-12-01 22:32:01 25 4
gpt4 key购买 nike

我的应用程序在启动时发送一个请求,并在成功时向用户显示一条简短的消息,通过 MTStatusBarOverlay .不幸的是,我当前的实现似乎与 iOS 9 的 View 生命周期范例相冲突。我收到消息

Application windows are expected to have a root view controller at the end of application launch



并且应用程序崩溃。该应用程序在 iOS 7 和 8 上运行良好。

通过在线搜索,在为应用程序的 UIWindow 建立根 View Controller 之前尝试将消息 View 添加到 View 层次结构时,似乎可能会发生这种情况。 ,但这里似乎并非如此,请参见下文。

这是 UIApplicationDelegate 的摘录执行:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[...]

self.window.rootViewController = [[MyViewController alloc] init];

[...]
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
[MyDataManager sendRequestWithCompletion:^{
// Displays a message with MTStatusBarOverlay
[self showSuccessOverlay];
}];
}
application:didFinishLaunchingWithOptions:applicationDidBecomeActive: 之前被调用所以似乎 rootViewController 永远不会有问题正在成立。

为什么会这样?导致应用程序崩溃的 iOS 9 有何不同?

最佳答案

MTStatusBarOverlayUIWindow 的子类,因此在应用程序启动期间实例化一个会添加 UIWindow到 iOS 检查填充的列表 rootViewController启动完成时。

我能够通过在使用覆盖层之前实例化和分配一个虚拟 Controller 来解决这个问题,如下所示:

[MTStatusBarOverlay sharedInstance].rootViewController = [UIViewController new];
[[MTStatusBarOverlay sharedInstance] postMessage:@"Message"];

关于ios - 启动后立即添加 View 时出现 "Application windows are expected to have a root view controller"消息,仅限 iOS 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792470/

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