#swift #nsoutlineview #nstreecontroller
#swift #nsoutlineview #nstreecontroller
Вопрос:
У меня есть многоуровневая иерархия в моем outlineview. Я могу получить выбранный элемент и его родительский элемент, используя приведенный ниже код.
func outlineViewSelectionDidChange(_ notification: Notification) {
guard let outlineView = notification.object as? NSOutlineView else {return}
if let item = outlineView.item(atRow: outlineView.selectedRow) as? CubeData{
// Getting the parent item
if let parentItem = outlineView.parent(forItem: item) as? CubeData{
print("Parent Item value:", parentItem.node)
}
print("Selected Item value:", item.node)
}
}
Но не удалось получить все основные родительские элементы.
Например, A-> B-> C-> D — это моя иерархия, и всякий раз, когда я выбираю «D», я могу получить «C» и «D». Мне нужны все родительские элементы. Любая помощь?
Комментарии:
1.
CubeData
Имеетparent
ли свойство?2. @Willeke, у нас есть массив родительского свойства.
3. Почему вы не можете получить бабушку и дедушку?
4. @Willeke, я не знаю, как его получить. Я не могу связать дочернего элемента с дедушкой и бабушкой.
5. Прародитель является родителем родителя. Если вы получаете родительский элемент с помощью,
let parentItem = item.parent
вы получаете дедушкуlet grandparentItem = parentItem.parent
и бабушку.