Я ищу связать 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, я не придирчив на выбор языка)
Вы установили 'childrenKeyPath' древовидного контроллера? Если да, то к чему? –
Я не задавал 'childrenKeyPath' ни к чему, нет. –
Вам нужно. В противном случае древовидный контроллер не может понять структуру данных, на которую он указывает. 'ChildrenKeyPath' должен быть ключевым путем относительно элемента массива' items', который дает массив дочерних элементов этого элемента. –