强制viewDidLoad在iOS上触发

时间:2012-10-03 07:21:45

标签: ios iphone viewdidload loadview

我有两个窗口应用程序,当我出现第一个窗口时,我希望第二个窗口中的视图可以加载并为后面的后台准备内容。

我尝试使用方法loadView,但Apple说您不应该直接调用此方法。

到目前为止,我已经选择使用视图的方法userInteractionEnabled,这实际上是隐含的 调用viewDidLoad方法。

是否有一种优雅的方法可以强制ViewControllers viewDidLoad方法在自然之前触发(当窗口是关键并呈现时)?

4 个答案:

答案 0 :(得分:56)

您只需致电[viewController view];

documentation for UIViewController解释了视图属性是如何延迟加载的,以及在加载视图后调用viewDidLoad

答案 1 :(得分:20)

在iOS 9中,Apple终于解决了这个问题:

// Loads the view controller's view if it has not already been set.
@available(iOS 9.0, *)
public func loadViewIfNeeded()

答案 2 :(得分:5)

Swift 2.0 ,与@Carl Veazey解决方案的结果相同:

let viewController = MyCustomViewController()
_ = viewController.view

答案 3 :(得分:0)

您可以为该控制器创建一个全局实例(可能在AppDelegate中)并调用您要为其执行操作的方法。然后在推送到该控制器时不创建新实例只需使用您创建的实例供全局使用。