Подтвердить что ты не робот

Force viewDidLoad для запуска iOS

У меня есть два окна приложения, и, когда я представляю первое окно, мне бы хотелось, чтобы во втором окне было загружено и подготовлено содержимое для последующего фона.

Я попытался использовать метод loadView, но Apple говорит, что вы не должны вызывать этот метод напрямую.

До сих пор я решил использовать метод представления userInteractionEnabled, который фактически неявно вызывает метод viewDidLoad.

Есть ли элегантный способ принудительного запуска метода ViewControllers viewDidLoad, прежде чем он будет естественным (когда окно будет ключевым и представлено)?

4b9b3361

Ответ 1

Вы можете просто позвонить [viewController view];.

Документация для UIViewController объясняет, как свойство lensy загружено и что viewDidLoad вызывается после загрузки представления.

Ответ 2

В iOS 9 Apple наконец-то исправила это:

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

Ответ 3

Swift 2.0, с тем же результатом решения @Carl Veazey:

let viewController = MyCustomViewController()
_ = viewController.view

Ответ 4

Вы можете создать глобальный экземпляр для этого контроллера (может быть в AppDelegate) и вызвать метод, для которого вы хотите выполнить действие. Затем При нажатии на этот контроллер не создавайте новый экземпляр. Просто используйте экземпляр, который вы создали для глобального использования.