【发布时间】:2017-06-11 03:13:46
【问题描述】:
当我打电话时
UIApplication.shared.keyWindow
尝试在我的测试类中设置根视图控制器,键窗口返回 nil。为什么会这样?
我是这样设置故事板的:
let testBoard = UIStoryboard(name: "TestStoryboard", bundle: Bundle(for: type(of: self)))
let vc = testBoard.instantiateViewController(withIdentifier: "TestController")
UIApplication.shared.keyWindow?.rootViewController = vc
_ = vc.view
vc.viewDidLoad()
【问题讨论】:
-
不确定,但我认为这是因为窗口默认为
nil而您还没有实例化窗口。见here -
顺便说一句,你为什么使用
keyWindow?尝试改用window看看是否可行,或者您正在构建 macOS 应用程序? -
我查看了链接,但在任何地方都没有看到解决方案。我无法设置
UIApplication.shared.keyWindow属性,因为它是只读的。如何实例化窗口? -
再次。你能告诉我为什么你使用
keyWindow而不是window吗?它是一个mac应用程序吗? (FWIW 我没有回答,因为我还在学习 Swift + TDD,只是用有限的知识发表评论:D) -
所以我不知道 keyWindow 是:这个属性保存了最近发送 makeKeyAndVisible() 消息的 windows 数组中的 UIWindow 对象。 AppDelegate 带有一个pre-build 可选的窗口属性,但开发者可以添加更多。