UITableView cellForRowAtIndexPath иногда не вызывается? - PullRequest
0 голосов
/ 20 мая 2010

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

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

У меня есть метод [tableView reloadData], вызываемый в методе viewDidAppear контроллеров навигации (также делегата табличного представления и источника данных).

Вызваны numberOfSectionsInTableView и numberOfRowsInSection, но cellForRowAtIndexPath этого не делает, несмотря на то, что оба последних метода возвращают положительные значения.

Это периодически возникающая проблема, возникающая лишь иногда, но неясно, что (если вообще что-то) влияет на это.

У кого-нибудь есть идеи?

[править] Нужно просто быстро добавить; щелкнув или иным образом взаимодействуя с табличным представлением, независимо от того, является ли оно ошибочным, как описано, или нет, ВСЕГДА вызывает его перерисовку.

[И снова] Немного больше информации; когда он выходит из строя, как описано, и вызывает первые два, но не метод cellforRowetc, кажется, что он ждет, пока пользователь не взаимодействует с таблицей, прежде чем будет окончательно вызван cellForRowetc (первые два метода затем не вызываются) и перерисовывается.

1 Ответ

0 голосов
/ 27 мая 2010

У меня был UIActivityIndicator, запущенный в отдельном потоке, который показывал, когда делались запросы к веб-сервису. Когда вызовы веб-службы были завершены, в класс контроллера графа было отправлено уведомление, чтобы остановить и скрыть UIActivityIndicator. В этом методе reloadData вызывался для таблицы независимо от того, было ли представление видимым или нет, что, похоже, вызывало проблему.

Похоже, что вывод не вызывать reloadData для таблицы, если она не видна.

...