iOS Present Viewcontroller 出现黑屏
Posted
技术标签:
【中文标题】iOS Present Viewcontroller 出现黑屏【英文标题】:iOS Present Viewcontroller getting black screen 【发布时间】:2015-01-19 10:16:17 【问题描述】:我正在尝试展示我用 StoryBoards 创建的 ViewController:
AuthViewController *authViewController = [[AuthViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:authViewController];
UIViewController *vc = [[[[UIApplication sharedApplication] windows] firstObject] rootViewController];
[vc presentViewController:nav animated:YES completion:nil];
但是黑屏。可能是什么问题?
【问题讨论】:
【参考方案1】:Alloc init AuthViewController
并不意味着会为控制器创建视图布局。
这里的视图控制器不加载它的视图,这就是你得到黑屏的原因。使用故事板对象和视图控制器的标识符来加载其视图。
在 AuthViewController
控制器的 Storyboard 中指定 Storyboard 标识符。
为Use Storyboard ID
选项添加Storyboard ID
并标记true
,如下图所示:
现在使用以下代码获取AuthViewController
控制器对象:
AuthViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"AuthViewController"];
【讨论】:
【参考方案2】:情节提要可以参考下面的sn-p:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
AuthViewController *authViewController = [storyboard instantiateViewControllerWithIdentifier:@"**YOUR_STORYBOARD_ID**"];
[authViewController setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:authViewController animated:YES completion:nil];
【讨论】:
【参考方案3】:AuthViewController
的 ViewController 是否存在于 Storyboard
中?如果是,那么您应该将Storyboard ID
传递给它,并以这种方式启动您的AuthViewController
:
AuthViewController *authViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"_STORYBOARD_ID_"];
我希望这会有所帮助。
【讨论】:
【参考方案4】:我的问题是这个类,例如故事板中的 AuthViewController 是一个简单的 UIViewController,而在我的 swift 类中它是一个 UITabBarController。这就是它没有渲染任何东西的原因。
愚蠢的错误,但我希望我可以为某人节省一些时间。
【讨论】:
以上是关于iOS Present Viewcontroller 出现黑屏的主要内容,如果未能解决你的问题,请参考以下文章
ios ViewController present不同的方向
iOS Present Viewcontroller 出现黑屏
Swift/iOS13 - UIApplication.shared.delegate.window?.rootViewController?.present() 来自自定义类