#cocoa #uitableview #uikit #nsoutlineview
#cocoa #uitableview #uikit #nsoutlineview
Вопрос:
В настоящее время я ищу решение для имитации NSOutlineView с помощью UIKit. Идея состоит в том, чтобы создать UITableView, который отображает иерархию, аналогичную списковому представлению в обычном окне Finder. Другими словами, элементы могут быть расширены или нет, и каждый элемент может содержать дочерние элементы или нет.
Поскольку иерархия может иметь глубину в несколько уровней, использование только разделов не является вариантом. Сложность заключается в том, чтобы иметь контроллер, который эффективно управляет источником данных табличного представления и знает, какие элементы развертываются и сколько строк нужно свернуть или развернуть, когда пользователь взаимодействует с табличным представлением.
Я не прошу готового решения, но я был бы признателен за указания или советы, чтобы заставить это работать эффективным способом.
Ответ №1:
Я не могу дать никаких подсказок относительно эффективности. Но UITableViewCell
в них есть встроенная поддержка уровней. Вы можете установить размер отступа и уровень для каждой ячейки. Итак, часть с отступами проста. Но расширение довольно сложно.
Я сделал несколько несовершенную реализацию для одного из своих приложений, но я могу быть совершенно уверен, что там не более нескольких сотен элементов. Таким образом, эффективность была достаточно эффективной.
Комментарии:
1. Спасибо за отзыв, Кристиан. Как я упоминал в своем вопросе, сложная часть заключается в управлении источником данных, поскольку вам нужно отслеживать родителей, дочерних элементов, уровни отступов, … Однако мне удалось заставить его работать, создав контроллер, который управляет всем этим. По сути, это NSMutableArray, в котором хранятся объекты, которые отслеживают эти параметры. Конечно, эти объекты также содержат фактические данные, которые необходимо отобразить в виде таблицы / в виде схемы. Теперь это отлично работает.