Почему методы UITableView вызываются до viewWillAppear? - PullRequest
1 голос
/ 04 апреля 2009

Я с нетерпением ждал, чтобы найти причину сбоя моего приложения в какой-то момент, и я обнаружил, что методы UITableView вызываются до или одновременно с вызовом viewWillAppear.

В viewWillAppear у меня есть код, который инициализирует количество строк в каждом разделе, но вызывается numberOfRowsInSection, прежде чем я закончу настройку массива, в котором количество строк в каждом разделе.

Я считаю, что viewDidLoad не подходит в моем случае, потому что он вызывается только один раз после запуска приложения. Я прав? И мне нужно, чтобы моя функция инициализации вызывалась каждый раз, когда на экране появляется представление.

Как мне преодолеть этот сбой?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2009

Ну, я думаю, что эта «проблема» связана с тем, что работают несколько потоков, заботящихся о представлении и UITableView.

Представление, вызывающее это представление, может (перед переключением на это представление) вызвать метод представления, который собирает данные.

  1. Пользователь нажал кнопку
  2. Вы запускаете метод в представлении назначения, собирая информацию
  3. Перейти к просмотру

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

Надеюсь, это поможет.

0 голосов
/ 02 декабря 2011

Я думаю, что правильный ответ заключается в том, что «[super viewWillAppear: animated]» вызовет метод UITableView. Поэтому необходимо поместить этот код после кода, который инициализирует tableView.

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