22

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

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

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

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

4

4 回答 4

57

你可以打电话[viewController view];

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

于 2012-10-03T07:25:23.337 回答
28

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

// Loads the view controller's view if it has not already been set.
@available(iOS 9.0, *)
public func loadViewIfNeeded()
于 2016-07-21T07:53:45.670 回答
6

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

let viewController = MyCustomViewController()
_ = viewController.view
于 2016-01-20T00:27:13.313 回答
0

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

于 2012-10-03T07:24:39.203 回答