Вернуть NSOutlineView's numberOfChildrenOfItem после веб-запроса - PullRequest
0 голосов
/ 12 апреля 2019

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

Поскольку это 1500элементы Я не могу сделать запрос для каждого родителя, чтобы перечислить своих детей при запуске приложения, поэтому я предпочел бы вернуть numberOfChildrenOfItem, как он вызывается после того, как пользователь расширяет элемент, для элемента после завершения веб-запроса

Пример кода того, как работает мой API:

func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {

    // code to determine if root or parent

    } else if parent {
        api.updateDatabaseChildren(for: parent) {
            // database has been updated and parent now has children
        }
    }

}

Я действительно не могу разобраться с этим, как мне это сделать?

1 Ответ

1 голос
/ 12 апреля 2019

Начните с того, что ваш источник данных вернет 1 для каждого родителя numberOfChildrenOfItem и true для isExpandable.

Для дочернего элемента каждого родителя, который еще не загрузил своих дочерних элементов, укажите фиктивный элемент, который отображает что-то вроде «Загрузка…»:

> Parent
> Parent
v Parent
     Loading...
> Parent

Когда пользователь раскрывает родительский элемент, асинхронно загружает его дочерние элементы из API. Получив результаты, используйте insertItems(), чтобы вставить дочерние элементы в их родительский элемент.

...