我有两个窗口应用程序,当我呈现第一个窗口时,我希望第二个窗口中的视图在后台加载和准备内容。
我尝试使用方法loadView
,但苹果公司表示不应直接调用此方法。
到目前为止,我选择使用视图的方法userInteractionEnabled
,这实际上隐式地调用了viewDidLoad
方法。
是否有一种优雅的方法来强制ViewControllers
的viewDidLoad
方法在应该自然发生之前触发(当窗口是关键且已呈现时)?
我有两个窗口应用程序,当我呈现第一个窗口时,我希望第二个窗口中的视图在后台加载和准备内容。
我尝试使用方法loadView
,但苹果公司表示不应直接调用此方法。
到目前为止,我选择使用视图的方法userInteractionEnabled
,这实际上隐式地调用了viewDidLoad
方法。
是否有一种优雅的方法来强制ViewControllers
的viewDidLoad
方法在应该自然发生之前触发(当窗口是关键且已呈现时)?
iOS 9中,苹果终于解决了这个问题:
// Loads the view controller's view if it has not already been set.
@available(iOS 9.0, *)
public func loadViewIfNeeded()
Swift 2.0,与@Carl Veazey的解决方案具有相同的结果:
let viewController = MyCustomViewController()
_ = viewController.view
你可以为该控制器(可能是在AppDelegate
中)创建一个全局实例,然后调用你想执行操作的方法。然后,在推向该控制器时,不要创建新的实例,只需使用你已经创建的全局实例即可。
UIViewController
文档解释了view
属性是惰性加载的,并且在视图加载后调用viewDidLoad
。 - Carl Veazey