Неуникальные предметы в NSOutlineView - PullRequest
0 голосов
/ 18 декабря 2011

Согласно документации Apple , NSOutlineView требует, чтобы каждый элемент в представлении был уникальным, однако что, если это на самом деле не соответствует бизнес-требованиям?В частности, как вы отображаете что-то вроде этого

Item A
  -> Item B
      -> Item E
  -> Item C
Item D
  -> Item B
      -> Item E
  -> Item F

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

Поможет ли подкласс NSOutlineView?Или нужно создать совершенно новый класс представления?

1 Ответ

1 голос
/ 18 декабря 2011

Вы можете использовать объекты NSIndexPath в качестве элементов в виде структуры.Например, путь индекса (0, 0) будет относиться к пункту B элемента A, а путь индекса (1, 0) будет относиться к элементу B элемента D.

Вы не сможете использоватьНаручники;вам нужно реализовать источник данных.

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

Кроме того, вам нужно будет правильно обрабатывать удаление объектов: если вы удаляете объект в середине массива моделиВы должны удалить индексный путь в конце, , а не тот, что в середине, и сказать представлению перезагрузить все элементы (пути индекса) между ними.

...