2010-05-31 2 views
1

У меня есть установка с объектом (OTNodeDatum) (OT для OutlineTest) как представляемый объект в NSTreeNode. NSTreeNode - это класс, показанный на странице атрибутов для NSTreeController.addChild и т. Д. С помощью NSTreeController и NSTreeNode (снежный барс)

У меня есть приложение на основе документа, без данных ядра. В MyDocument init я настроил контент с помощью NSMutableArray, содержащего один элемент, NSTreeNode с представленным объектом, который содержит одно свойство (да, имя).

кнопку Добавить, Добавить кнопку Child, кнопку Удалить, подключил через интерфейс строителя к NSTreeController добавить действия и т.д.

Он работает до точки.

Когда я добавляю, я получаю новую пустую строку, которую я могу редактировать, но вставленный текст уходит, когда я покидаю ячейку.

Когда я делаю удаление, вещи удаляются.

Когда я добавляю ребенка, ничего не происходит.

Я думаю, что я должен подклассифицировать NSTreeNode или NSTreeController, чтобы получить правильное поведение с точки зрения добавления дочерних элементов и добавления нового представленного объекта в дополнение к добавлению нового узла дерева.

Это на правильном пути? Если бы я подклассифицировал NSTreeController, я бы просто переопределил add, addChild, чтобы получить правильное решение? И что я мог испортить? Кажется, я не могу найти никаких указаний по этому поводу, хотя я долго смотрел.

Спасибо.

John V

ответ

2

Оказывается, что правильный способ сделать вещи, или, по крайней мере, способ, заключается в использовании

-(void)insertObject:(id)object atArrangedOjectIndexPath:(int)index; 

Сначала создайте representedObject, создайте новый NSTreeNode с этим представленным объектом, затем вставьте его. Больше работы, чем просто подключение кнопки добавления к контроллеру дерева, но (надеюсь) преимущества использования NSTreeNode компенсируют это.

Смежные вопросы