Вызывать drawSelectionInRect только при изменении выбора в пользовательском классе TableRowView?

В моем приложении OSX я создаю подкласс NSTablRowView, чтобы сделать цвет выбора строки для моего представления на основе настраиваемого tableView.

Я использую следующий метод переопределения для этого:

- (void)drawSelectionInRect:(NSRect)dirtyRect 

Я заметил, что этот метод вызывается все время, когда выбрана хотя бы одна из строк на экране.

Мне интересно, есть ли способ не перерисовывать строки все время, а делать это только при изменении выбора строки?!

Любая помощь высоко ценится!

1 ответ

Решение

Мне интересно, есть ли способ не перерисовывать строки все время, а делать это только при изменении выбора строки?!

Табличные представления звонков drawSelectionInRect: ровно один раз после того, как выбор изменился. (При условии, что нет чрезмерных вызовов setNeedsDisplay)

drawRect: с другой стороны, должен вызываться как минимум дважды (1x для невыбранной строки и 1x для вновь выбранной).
Я заметил, что NSTableView иногда также перерисовывает "промежуточные" строки при изменении выделения. (например, строки 3-5, когда выбор изменяется со строки 2 на 6).

Другие вопросы по тегам