У меня есть пользовательский вид в пользовательской ячейке таблицы. Каждый раз, когда изменяется определенное свойство в пользовательском представлении, я вызываю [self setNeedsDisplay]
, который перерисовывает представление в - (void)drawRect:(CGRect)rect
. Это свойство задается в делегате таблицы tableView:cellForRowAtIndexPath:
. Но когда представление таблицы больше, чем экран, и ячейки необходимо повторно использовать, drawRect
не вызывается каждый раз, когда setNeedsDisplay
есть. Особенно, когда я быстро рисую стол. Медленная прокрутка отлично работает. Это приводит к тому, что информация в первой и последней ячейках часто неверна.
В журнале я вижу, что обычно для каждого вызова setNeedsDisplay
есть вызов drawRect
, но когда я быстро прокручиваю представление таблицы, появляется больше вызовов setNeedsDisplay
, чем drawRect
. Разумеется, здесь должно быть соотношение "один-к-одному".
Я использую тот же пользовательский вид в обычном UIView, и он перерисовывается идеально каждый раз, когда я вызываю setNeedsDisplay
. Проблема кажется изолированной от представлений таблиц и повторного использования ячеек.
Кто-нибудь знает, что здесь происходит? Есть ли другой способ заставить пользовательский вид перерисовать себя?