Как загрузить более одного ViewController при использовании TabBarController? - PullRequest
1 голос
/ 04 февраля 2011

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

Насколько я понимаю, метод viewDidLoad для ViewController вызывается только для этой вкладки, когда он впервые выбран.Есть ли способ заставить TabBarController вызывать метод ViewController viewDidLoad, даже если он не активен?

thx

Ответы [ 2 ]

0 голосов
/ 31 октября 2014

Эта техника, кажется, работает довольно хорошо. У меня есть приложение с UITabBarController внизу с 5 кнопками в нем. Когда пользователь нажимает 3-ю кнопку, viewDidLoad для этого представления занял 5 секунд, поэтому я использовал этот метод, чтобы вызвать его viewDidLoad при запуске приложения. Я не хочу, чтобы отображался третий вид; только чтобы быть инициализированным, чтобы он мгновенно появлялся при нажатии.

Мне пришлось разделить UITabBarController на что-то наподобие FoohBarController, затем в его viewDidLoad я сделал фоновый поток так:

{
  // get a pointer to the 3rd item in the tab bar (0 based)
  UINavigationController *navcon = [self.viewControllers objectAtIndex:2]; 

  // get a pointer to the viewController I want to init
  CalendarViewController *calendar = [navcon.viewControllers objectAtIndex:0];

  // Just ask for the view. This will force the view to load and to initialize
  UIView *v = calendar.view;
  v = nil;    // to remove a compiler warning
}
0 голосов
/ 05 февраля 2011

Просто обратитесь к представлению ViewController:

<code>[myViewController view]

Если представление myViewController равно nil, оно будет загружено.

Обратите внимание, что даже если этоподход работает, ваше приложение будет зависеть от механизма загрузки / выгрузки представления, который управляется внутренней логикой цикла выполнения, а не вашим приложением, в то время как "внутренняя логика" контроллера представления должна быть инициализирована методом initWithNib: полностьюпод вашим контролем.Но это всего лишь предложение избежать странных ошибок, в любом случае предлагаемое решение работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...