Почему мой подкласс UIView не перерисовывается после того, как я вызываю setNeedsDisplay? - PullRequest
3 голосов
/ 09 января 2011

У меня есть пользовательский UIView, который является подвидом UITableViewCell.Когда отрисовывается ячейка, мой пользовательский вид также корректно вызывает drawRect: в моем подклассе UIView.Когда ячейка перезагружается, вид отображается правильно (вызывается drawRect:).

Когда происходит определенное событие (например, по таймеру), я хочу перерисовать представление без перезагрузки всей ячейки.(Это не единственное представление в ячейке.)

Однако, когда я вызываю setNeedsDisplay на моем подвиде, ничего не происходит.

Я предполагаю, что когда мое представление drawRect: вызывается, результирующее изображение кэшируется где-то в основе, так что когда я вызываю setNeedsDisplay, эта поддержка перерисовывается на экране, но мой вызов drawRect: больше никогда не вызывается.

Почему drawRect: больше не вызывается после создания ячейки?

РЕДАКТИРОВАТЬ: подпредставления ячейки создаются из кончика.то есть: UIViewController загружается из пера, и его представление добавляется в UITableViewCell.

Я сделал тестовый пример с нуля с пользовательским представлением, которое не загружается из пера (созданного кодом), и онработает как положено: setNeedsDisplay приводит к вызову drawRect:.Это должно быть что-то, что либо настроено в файле .xib, либо что-то, что происходит по-другому с представлением, когда оно загружается из пера.

1 Ответ

1 голос
/ 13 мая 2011

Я сам столкнулся с той же проблемой. Для меня это была проблема с моим XIB - хотя я делаю UIView на подклассы - так что адаптируйся соответственно. Моя ошибка в IB состояла в том, что я прикрепил свои элементы управления к «владельцу файла» вместо того, чтобы прикреплять их к UIView. Я уверен, что в моей неопытности происходит нечто большее - возможно, кто-то с немного большим опытом может уточнить.

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

...