目标c:iOS13+以编程方式设置初始根视图控制器



我正试图在iOS 14中使用SceneDelegate以编程方式设置初始根视图控制器(根本没有故事板(。我已经跟随https://medium.com/@sapa.tech/xcode-11-3-remove-storyboard-from-project-6c48c9d11123从我的应用程序中删除故事板,并在swift中看到了这个问题的许多答案。为什么手动设置根视图控制器显示黑屏?,以及设置根视图控制器iOS 13和iOS 13:Swift-';以编程方式设置应用程序根视图控制器';不起作用。然而,我正在寻找如何在目标C中做到这一点的技巧。到目前为止,我在我的场景代理中已经有了这个,其中ViewController是我试图设置为根视图控制器的类:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {

UIWindowScene * winscene = [[UIWindowScene alloc]initWithSession:session connectionOptions:connectionOptions];

[self.window setWindowScene:winscene];
ViewController * viewController = [[ViewController alloc]init];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
}

在我的AppDelegate中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

return YES;
}

我试着把我找到的Swift答案翻译成目标c,但最终我还是在模拟器上看到了一个黑屏。该应用程序构建良好,没有任何错误,但我无法让ViewController显示而不是黑屏。有人知道我缺了什么吗?

您不应该自己创建UIWindowScene,而是使用给定的参数:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
ViewController * viewController = [[ViewController alloc]init];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
}

相关内容

  • 没有找到相关文章

最新更新