强制viewDidLoad在iOS上触发

Bor*_*zin 22 iphone viewdidload loadview ios

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

我试过使用方法,loadView但Apple说你不应该直接调用这个方法.

到目前为止,我已经选择使用视图的方法userInteractionEnabled,它实际上隐式调用viewDidLoad方法.

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

Car*_*zey 56

你可以打电话[viewController view];.

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

  • 如此简单但如此强大:)谢谢! (6认同)

Rud*_*vič 21

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

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


Tho*_*mon 6

Swift 2.0,与@Car Ve Veeyey解决方案的结果相同:

let viewController = MyCustomViewController()
_ = viewController.view
Run Code Online (Sandbox Code Playgroud)

  • 不好,我实例化了NavigationController,这就是为什么它不起作用的原因……谢谢 (3认同)