2011-01-09 4 views
3

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

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

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

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

Почему drawRect: никогда не звонил снова после создания ячейки?

РЕДАКТ. Подземелья соты создаются из наконечника. т.е.: UIViewController загружается из nib, и его представление добавляется в UITableViewCell.

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

+0

Вы называете setNeedsDisplay из основного потока? Вы уверены, что отправляете его в правильное представление (то есть должно быть хорошо, если оно сделано из ячейки, но может быть легко сделано неправильно, когда сделано * где-то *, и ячейка была заменена (т.е. прокруткой). – Eiko

+0

Да, нам нужно еще один код – vodkhang

+0

Да, setNeedsDisplay вызывается из основного потока.Я даже пытался отложить его, используя performSelectorOnMainThread: ... нет радости. См. редактирование о представлении, поступающем из файла nib (.xib). –

ответ

1

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

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