为啥我无法在 AppDelegate 中以编程方式更改我的初始视图控制器?
Posted
技术标签:
【中文标题】为啥我无法在 AppDelegate 中以编程方式更改我的初始视图控制器?【英文标题】:Why am I unable to change my initial view controller programmatically in my AppDelegate?为什么我无法在 AppDelegate 中以编程方式更改我的初始视图控制器? 【发布时间】:2014-04-15 04:25:16 【问题描述】:我遵循this question 的建议,以便在运行时定义我的初始视图控制器,而不是根据 Storyboard 属性始终保持相同。
这是我的didFinishLaunching
方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *compactNavigationController = [mainStoryboard instantiateViewControllerWithIdentifier:@"CompactNavigationController"];
self.window.rootViewController = compactNavigationController;
[self.window makeKeyAndVisible];
CompactPostsViewController *controller = (CompactPostsViewController *)compactNavigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
并且我在我的 Storyboard 中取消选中“Is Initial View Controller”,并从我的应用信息中的默认 Storyboard 中删除了“Main”。
但是当我启动应用程序时,我得到一个完全黑屏。我做错了什么?
【问题讨论】:
【参考方案1】:您的窗口为零,因为您从未创建过它。你需要添加这一行,
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
当您在 info.plist 中有“主故事板基本名称”条目时,将为您创建窗口,但如果您删除它,则您必须自己创建窗口。
【讨论】:
【参考方案2】:检查故事板中的链接(通过右键单击 tableview 控制器)。这主要发生在您未正确链接 tableview 控制器时。
【讨论】:
以上是关于为啥我无法在 AppDelegate 中以编程方式更改我的初始视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
在 AppDelegate 中以编程方式设置 App 入口点
为啥我不能在 react native 中以编程方式添加道具?