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? функции, которые означают структуры, не будут работать.

Изменить мои структуры на классы сделали свое дело

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