NSOutlineView ReloadItem не работает
При вызове reloadItem () в моем NSOutlineView элементы, похоже, не обновляются. ReloadData () обновляет их нормально. Как и rowForItem (), за которым следует reloadDataForRowIndexes ().
Благодаря отладке я обнаружил, что viewForTableColumn () никогда не вызывается после ReloadItem (). Это кажется странным, потому что почему эта функция существует?
Так почему бы мне просто не использовать rowForItem () и reloadDataForRowIndexes (), как вы говорите. Потому что, если элемент имеет isGroupItem, возвращающий true, то reloadDataForRowIndexes ничего не делает. Я думаю, что я где-то читал, что это потому, что groupItems не имеют столбцы или что-то?
Поэтому я не могу обновить строки groupItem в моем NSOutlineView без вызова reloadData(). Это мешает мне использовать любую вставку и удаление анимации... и я хочу анимацию.
Кто-нибудь нашел способ обновления строк groupItem с помощью reloadItem??? или любой другой способ, который не должен перезагрузить весь вид структуры?
Лучший,
Gavin
1 ответ
Старый вопрос, но я все еще сталкивался с этим сегодня после нескольких часов подобных проблем. Во всяком случае я в конечном итоге нашел это на форумах разработчиков https://forums.developer.apple.com/thread/68477
По сути NSOutlineView
сравнивает по ссылке со всеми его for item: Any?
функции, которые означают структуры, не будут работать.
Изменить мои структуры на классы сделали свое дело