Случайное обновление пользовательского интерфейса с помощью пользовательских ячеек UITableViewController и Prototype, определенных из раскадровки - PullRequest
0 голосов
/ 08 февраля 2012

Я создал подкласс UITableViewController, который используется в качестве пользовательского класса для представления в моей раскадровке.Представление имеет несколько разделов / строк, определенных как ячейки прототипа, которые создаются и отображаются, как и ожидалось.Большинство UITableView методов делегата просто вызывают методы супер-класса, которые обрабатывают количество разделов, строки и т. Д.

Я кэшировал содержимое, которое используется для обновления ячеек на -viewDidLoad, а затем асинхронную операцию, которая перезагружаетсодержимое с моего сервера и впоследствии связывает данные (в главном потоке, -performSelectorOnMainThread: :).Именно в этот момент, по-видимому, произвольно, часть содержимого ячеек (в первую очередь метки) будет очищена от данных и не обновлена ​​до новых данных в течение 10-15 секунд.В этот момент содержимое, которое просто отображается или иногда прокручивается в табличном представлении, приведет к отображению содержимого.

Я знаю, что вызывается селектор, и в основном потоке свойства текста элемента UI получаютустановить, но случайно они просто ... не обновляютсяЯ попытался добавить -setNeedsDisplay в tableView, представление контроллера и -reloadData в tableView (хотя последний показался ненужным, поскольку они являются прототипными ячейками), но все безрезультатно.

Кто-нибудь сталкивалсяэто? * * 1013

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Мой комментарий действительно решил мою проблему. Кажется, UILabel не обновляются при изменении, а скорее внутренне решается, когда их перекрашивать - независимо от того, пытаетесь ли вы принудительно вызвать его с помощью display или setNeedsDisplay.

Решение: используйте UITextView вместо UILabel

0 голосов
/ 28 февраля 2012

Я не уверен, что это вызвано аспектами потока или тем, как обрабатывается tableView. Если это tableView, ознакомьтесь с этой публикацией , поскольку существует некоторое сходство с исчезновением данных, с которым мое приложение сталкивалось, пока я правильно не обработал динамические прототипы tvCells.

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