ios - 在 Scenedelgate 中设置视图控制器后 Xcode 11.5 IOS 13.5 黑屏
问题描述
初学者警报:我正在使用 IOS 13.6 做 Swift 11.6。我是 Swift 的初学者,我正在尝试检查我的用户以前是否登录过。为此,我使用了用户默认值,这似乎工作正常。问题是当我在 Scenedelgate 中初始化我的视图控制器时,它似乎无法正常工作 - 我只得到一个黑屏。
另一个注意事项是我的主屏幕上有一个侧边菜单,所以我试图初始化 UINavigationController,然后是里面的 HomeViewController
这是我的场景委托代码:
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var storyboard: UIStoryboard?
var view: UIView?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else {return}
let def = UserDefaults.standard
let is_authenticated = def.bool(forKey: "is_authenticated") // return false if not found or stored value
if is_authenticated {
// user logged in
self.view?.window?.rootViewController = UINavigationController(rootViewController: HomeViewController())
self.view?.window?.makeKeyAndVisible()
}
}
编辑1:这是我的用户默认功能的样子:
func saveLoggedState() {
let def = UserDefaults.standard
def.set(true, forKey: "is_authenticated") // save true flag to UserDefaults
def.synchronize()
}
编辑 2: 这是我的模拟器的外观
编辑 3: 这是我的视图控制器的外观
编辑4:所以这就是问题所在。我决定尝试以编程方式将主视图控制器设置为白色,这显然有效。那么让我感到困惑的是,我在 HomeViewController 和 SideMenuNavigationController 中都看不到任何内容。我放了一个按钮和一个标签,但它们没有出现。
感谢您提供的任何建议。我是一个完整的新手,所以我真的不知道我在做什么。任何帮助表示赞赏。
谢谢!
解决方案
这一行是错误的:
self.view?.window?.rootViewController = UINavigationController(rootViewController: HomeViewController())
特别是,问题是您的代码中的这个短语:
HomeViewController()
这会创建一个新的空白 HomeViewController,而不是您在情节提要中设计的实例。要获得该实例,请告诉故事板为您实例化它。
推荐阅读
- c# - 如何在 DLL 中调用 Web 服务
- c# - 为授权标签设置默认重定向
- slack-api - 为什么我无法通过聊天 postMessage api 向用户发送消息?
- c# - 立即从另一个组件更新 Blazor 中的字段
- python - 如何使用python找出word文档的原作者?
- angular - 如何以角度10按升序对列中的JSON数据进行排序
- python - 加载和使用 BoostedTreesClassifier 保存的模型
- wordpress - 将 wordpress 实时站点克隆到 localhost (mamp) - 重定向到实时站点
- php - MadLibs 覆盖输入字段
- oracle - 以下输出中连续工资的总和