2015-08-05 2 views
0

Я ищу связать NSTreeController, который, в свою очередь, привязан к массиву, Ань NSOutlineView:связывании NSTreeController к NSOutlineView в коде

treeController.bind(NSContentArrayBinding, 
    toObject: viewModel, 
    withKeyPath: "items", 
    options: nil) 

outlineView.bind(NSContentBinding, 
    toObject: treeController, 
    withKeyPath: "arrangedObjects", 
    options: nil) 

outlineView.bind(NSSortDescriptorsBinding, 
    toObject: treeController, 
    withKeyPath: "sortDescriptors", 
    options: nil) 

outlineView.bind(NSSortDescriptorsBinding, 
    toObject: treeController, 
    withKeyPath: "selectionIndexPaths", 
    options: nil) 

items в viewModel содержит объект, который в свою очередь имеет его собственный массив детей.

Однако при выполнении вышеуказанной привязки в пользовательском интерфейсе ничего не отображается. Я также попытался добавить столбец:

let column = NSTableColumn(identifier: "0") 

column.bind(NSValueBinding, 
    toObject: treeController, 
    withKeyPath: "arrangedObjects.displayName"), 
    options: nil) 

outlineView.addTableColumn(column) 

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

Что мне не хватает, чтобы сделать обязательную работу? NSOutlineView рендеров, как и ожидалось, только без каких-либо элементов в.

(Вы можете ответить на Objective-C, я не придирчив на выбор языка)

+0

Вы установили 'childrenKeyPath' древовидного контроллера? Если да, то к чему? –

+0

Я не задавал 'childrenKeyPath' ни к чему, нет. –

+0

Вам нужно. В противном случае древовидный контроллер не может понять структуру данных, на которую он указывает. 'ChildrenKeyPath' должен быть ключевым путем относительно элемента массива' items', который дает массив дочерних элементов этого элемента. –

ответ

1

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

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