(на основе представления) NSTableView reloadDataForRowIndexes: columnIndexes: не удаляет представление строк?

#macos #cocoa #nstableview

#macos #какао #nstableview

Вопрос:

Пытаюсь использовать reloadDataForRowIndexes:columnIndexes: для моего представления, основанного NSTableView на 10.7. Возникли проблемы с перерисовкой. Если я отредактирую объект и вызову reloadDataForRowIndexes:columnIndexes: и позже удалю объект, я получу статическое представление строк.

В документы предупреждают:

Для табличных представлений на основе представлений reloadDataForRowIndexes:columnIndexes: удалит ячейки представления в строке таблицы, но не экземпляры NSTableRowView.

Не уверен, как я должен указать табличному представлению также удалить представление строк. Если я использую reloadData, все работает, но, очевидно, это намного более сложный метод для вызова и приводит к потере выбора.

Есть мысли?

ОБНОВЛЕНИЕ: добавлено демонстрационное приложение для демонстрации ошибки. Можно найти на GitHub. У него есть обходной код, но, тем не менее, я все равно хотел бы найти ответ.

https://github.com/zorn/NSTableView-ViewBased-ReloadRowBug

Ответ №1:

Я думаю, что я исправил эту ошибку. Оказывается, вы должны быть осторожны при закрытии с [self.tableView endUpdates] помощью, прежде чем пытаться выполнить какой-либо вид reloadDataForRowIndexes:columnIndexes: в tableview.

Я добавлю свой радар, запрашивающий официальную консоль, которая будет регистрироваться при попытке сделать такую вещь.

Проект GitHub был обновлен.