我正在尝试测试(使用XCTest框架)驻留在框架内的视图控制器(动态库).我遇到了属性UIApplication.sharedApplication().keyWindow的问题,它是nil.我有以下代码:
override func setUp() {
super.setUp()
let storyboard = UIStoryboard(name: STORYBOARD_NAME_REPORT,
bundle: BundleUtil.getCurrentBundle())
let chatViewController = storyboard.instantiateViewControllerWithIdentifier(VIEW_CONTROLLER_ID_TIP_CHAT) as UIViewController
let navigationController = UINavigationController()
let viewControllers = [chatViewController]
navigationController.viewControllers = viewControllers
// PROBLEM: The following causes a crash because keyWindow is nil.
UIApplication.sharedApplication().keyWindow!.rootViewController = chatViewController
// Force the view controller to be loaded.
// Source: https://www.natashatherobot.com/ios-testing-view-controllers-swift/
let _ = navigationController.view
let _ = chatViewController.view
}
Run Code Online (Sandbox Code Playgroud)
有关如何正确初始化keywindow属性的任何想法?
小智 0
您可以尝试如下设置:
首先获取共享窗口并将视图控制器指定为根控制器
var window = UIApplication.shared.delegate?.window!
window.rootViewController = viewController
Run Code Online (Sandbox Code Playgroud)
然后使窗口成为关键且可见。
window.makeKeyAndVisible()
CATransaction.flush() //optional
Run Code Online (Sandbox Code Playgroud)