Различия между NSTableView и NSCollectionView
-
11-09-2019 - |
Вопрос
Я пытаюсь решить, какой путь выбрать для разработки моего приложения Snow Leopard.Во-первых, я должен начать с очевидных различий:
NSTableView
может иметь несколько столбцов данных для представления разных частей одного и того же "элемента" данных (строки), где NSCollectionView
также может отображать сетку данных, но каждая комбинация строка + столбец является отдельным элементом.Для моих целей предположим, что я имею дело с одним столбцом.
Насколько я могу судить,
NSCollectionView
элементы являютсяNSView
все они должны иметь одинаковые размеры.Кроме того, в отличие отNSTableView
, элементы collectionview копируются вNSCollectionView
вместо того, чтобы предоставляться по мере необходимостиdataSource
(Я не уверен в этом, пожалуйста, поправьте меня, если я ошибаюсь).NSTableView
использованиеNSCell
s, если вы решите настроить отображение строк.КакNSCell
не являетсяNSResponder
, как обрабатываются события (если бы я хотел добавить в ячейку какой-нибудь аксессуар, например, как работают стрелки в iTunes (хотя iTunes - это Carbon).Я видел некоторыеNSCell
подклассы в IB, которые, по - видимому, являются эквивалентами ихNSControl
братья, но что, если я хочу иметьMySweetView
объекты вNSCell
?).Оба, похоже, работают примерно одинаково в отношении привязок, верно?
Наконец - то,
NSCollectionView
по-видимому, он хорошо воспроизводит анимацию своих элементов (например, для перестановки элементов или их фильтрации).МожетNSTableView
сделать это с его строками?
Есть что-нибудь еще, что я должен рассмотреть?
Решение
- Разница здесь в том, что в табличном представлении каждая строка представляет собой один элемент, а столбцы показывают разные аспекты (свойства) этого элемента.В представлении коллекции каждое пересечение строки и столбца представляет собой один элемент.
- Я этого не делал, но попробуйте реализовать
tableView:didClickTableColumn:
в вашем табличном представлении делегируйте.Этот метод является новым в версии 10.6.Вам нужно было бы получить[NSApp currentEvent]
, и, вероятно, передайте его методу в ячейке столбца. - С помощью табличного представления вы привязываете столбец;вы не привязываете представление (во всяком случае, не для предоставления контента;вы действительно привязываете представление к таким вещам, как индексы выбора).В представлении коллекции нет столбцов (см. # 1), поэтому вы всегда привязываете представление.
- Нет.
Другие советы
FWIW, NSTableView - это очень старая часть AppKit, и она немного грубовата.
Если вы новичок в платформе, я бы рекомендовал сначала ознакомиться с NSCollectionView.