Как я могу загружать просмотры других вкладок при запуске приложения?

Для удобства пользователей я хочу заранее загрузить другие вкладки.

У меня есть 4 вкладки в моем UITabBarController, и viewDidLoad () для каждого UIViewController вызывается, когда пользователь выбирает эту конкретную вкладку, кроме первого контроллера представления.

как лучше всего загружать представления на других вкладках при запуске приложения, прежде чем пользователь выберет эту вкладку?


person RavikanthM    schedule 31.01.2017    source источник
comment
Действительно ли загрузка представления является проблемой, или вы связали ее с какой-то другой проблемой, например, с загрузкой данных по сети? Вместо того, чтобы пытаться изменить жизненный цикл загрузки представления, обычно предпочтительнее отделить нужное вам поведение от загрузки представления, чтобы вы могли запускать его напрямую.   -  person Jonah    schedule 31.01.2017
comment
@Jonah, My NSFetchedResultsController находится на второй вкладке, и я сохраняю некоторые данные в coredata на моей первой вкладке, NSFetchedResultsController не работает должным образом, если эта вкладка не загружена до сохранения данных.   -  person RavikanthM    schedule 31.01.2017
comment
Контроллеры представлений разных вкладок не должны зависеть друг от друга. Каждый контроллер представления должен стоять отдельно.   -  person rmaddy    schedule 31.01.2017
comment
Это похоже на другую проблему; некоторая путаница в использовании NSFetchedResultsController. Работа с моделями в Core Data не должна зависеть от состояния представления UIViewController. Однако, поскольку мы не можем увидеть реализацию вашего контроллера, в этом вопросе недостаточно подробностей, чтобы предложить полезный ответ.   -  person Jonah    schedule 31.01.2017


Ответы (2)


Чтобы принудительно вызвать метод viewDidLoad, вам просто нужно сослаться на свойство view контроллера представления.

Что-то вроде этого могло бы сделать это:

_ = someViewController.view // causes `viewDidLoad` to be called.
person rmaddy    schedule 31.01.2017

Попробуйте вызвать метод loadViewIfNeeded() для каждого контроллера представления из стека UITabBarController. Согласно документации это

Загружает представление контроллера представления, если оно еще не было загружено.

Вы можете найти все контроллеры представления UITabBarController через его свойство viewControllers.

person iyuna    schedule 31.01.2017