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