Ответ 1
Вы можете просто позвонить [viewController view];
.
Документация для UIViewController объясняет, как свойство lensy загружено и что viewDidLoad
вызывается после загрузки представления.
У меня есть два окна приложения, и, когда я представляю первое окно, мне бы хотелось, чтобы во втором окне было загружено и подготовлено содержимое для последующего фона.
Я попытался использовать метод loadView
, но Apple говорит, что вы не должны вызывать этот метод напрямую.
До сих пор я решил использовать метод представления userInteractionEnabled
, который фактически неявно
вызывает метод viewDidLoad
.
Есть ли элегантный способ принудительного запуска метода ViewControllers
viewDidLoad
, прежде чем он будет естественным (когда окно будет ключевым и представлено)?
Вы можете просто позвонить [viewController view];
.
Документация для UIViewController объясняет, как свойство lensy загружено и что viewDidLoad
вызывается после загрузки представления.
В iOS 9 Apple наконец-то исправила это:
// Loads the view controller 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
) и вызвать метод, для которого вы хотите выполнить действие. Затем При нажатии на этот контроллер не создавайте новый экземпляр. Просто используйте экземпляр, который вы создали для глобального использования.