Получение количества строк в NSOutlineView - PullRequest
2 голосов
/ 20 декабря 2009

Как узнать общее количество строк в NSOutlineView?

Ответы [ 2 ]

7 голосов
/ 20 декабря 2009

есть метод с именем numberOfRows, который возвращает NSInteger. например ваш NSOutlineView называется outlineView:

NSInteger *rows = [outlineView numberOfRows];

Документация здесь:

https://developer.apple.com/documentation/appkit/nstableview/

"Как правило, вы не должны спрашивать у табличного представления, сколько у него строк; вместо этого вы должны опросить источник данных табличного представления."

Существует неофициальный протокол, если вы действительно настаиваете на использовании tableView, а именно:

– numberOfRowsInTableView: (NSTableDataSource informal protocol)
4 голосов
/ 20 декабря 2009

Включает ли это какие-либо подчиненные строки в развернутых строках? Например, если foo содержит bar, baz и qux и расширен, то bar, baz и qux также являются видимыми строками. И наоборот, если foo не раскрывается, то bar, baz и qux не являются «строками в [NSOutlineView» - они существуют только в вашей модели.

Забудьте о набросках. Это неактуально и смущает ваш вопрос. Вы хотите узнать, сколько у вас объектов модели, поэтому спросите у контроллера, которому они принадлежат.

Люди говорят «спросите источник данных», потому что этот контроллер является объектом, который должен быть источником данных вашего представления. Но забудьте о набросках и забудьте о свойстве источника данных. Поговорите с контроллером напрямую. Спросите, сколько у него объектов-моделей. Если вы хотите узнать подробный вариант ответа (сколько вещей у вас есть, включая вещи в других вещах), спросите его об этом. В любом случае, также реализуйте метод в этом контроллере для предоставления ответа.

Приложение: Помните разделение сил в Какао . У вас есть модель, которая представляет собой данные пользователя в виде объекта; виды, которые отображают модель для пользователя; и контроллеры, которым принадлежат модель и виды. Вы говорите, что это не вопрос рисования; это ставит вопрос не о представлении («сколько строк вы будете рисовать»), а о контроллере («сколько у вас есть« каких-то вещей »). Поэтому вам нужно спросить об этом у контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...