Навсегда скрыть строки в NSTableView / NSOutlineView - PullRequest
0 голосов
/ 16 января 2019

У меня в NSOutlineView есть несколько строк, которые я хотел бы скрыть навсегда (по причинам, связанным с моей структурой данных).

В 10.13, используя автоматическую высоту строк и автоматическое размещение, я смог просто не видеть некоторые строки данных, поэтому они были скрыты для пользователя.

Теперь я делаю свое приложение доступным 10.11, поэтому мне приходится вручную вычислять высоту строк. Функция NSOutlineViewDelegate 'heightOfRowByItem' настаивает на ненулевой высоте строки, поэтому я больше не могу иметь полностью скрытые строки таким же образом.

Казалось бы, альтернативный метод NSTableView 'hideRows'. Он может скрывать определенный ряд, не скрывая своих детей (идеально в моем случае). Единственная проблема заключается в том, что все, кажется, «прячется», когда я перетаскиваю строки.

Кто-нибудь знает либо: - Как сделать так, чтобы строки не были скрыты при перетаскивании (я не вижу никакой документации) - Другой подход к созданию невидимых строк в NSTableView / NSOutlineView.

Спасибо

1 Ответ

0 голосов
/ 21 января 2019

Создайте новый класс, который будет служить нашим элементом NSOutlineView, и обновите эти элементы, чтобы они отражали состояние вашей базовой модели. Это может показаться большим трудом, но это будет гораздо приятнее, чем пытаться быть умным в ваших методах NSOutlineViewDataSource / Delegate. Для меня работать с NSOutlineView было сложнее всего, когда я пытался использовать свою существующую модель, чтобы управлять им, и проще всего, когда я создавал класс, чтобы быть элементом.

Это также имеет то преимущество, что вы не загромождаете вашу модель функциональностью и состоянием, которые относятся только к представлению в виде структуры.

...