Вопрос

Я пытаюсь решить, какой путь выбрать для разработки моего приложения Snow Leopard.Во-первых, я должен начать с очевидных различий:

NSTableView может иметь несколько столбцов данных для представления разных частей одного и того же "элемента" данных (строки), где NSCollectionView также может отображать сетку данных, но каждая комбинация строка + столбец является отдельным элементом.Для моих целей предположим, что я имею дело с одним столбцом.

  1. Насколько я могу судить, NSCollectionView элементы являются NSViewвсе они должны иметь одинаковые размеры.Кроме того, в отличие от NSTableView, элементы collectionview копируются в NSCollectionView вместо того, чтобы предоставляться по мере необходимости dataSource (Я не уверен в этом, пожалуйста, поправьте меня, если я ошибаюсь).

  2. NSTableView использование NSCells, если вы решите настроить отображение строк.Как NSCell не является NSResponder, как обрабатываются события (если бы я хотел добавить в ячейку какой-нибудь аксессуар, например, как работают стрелки в iTunes (хотя iTunes - это Carbon).Я видел некоторые NSCell подклассы в IB, которые, по - видимому, являются эквивалентами их NSControl братья, но что, если я хочу иметь MySweetView объекты в NSCell?).

  3. Оба, похоже, работают примерно одинаково в отношении привязок, верно?

  4. Наконец - то, NSCollectionView по-видимому, он хорошо воспроизводит анимацию своих элементов (например, для перестановки элементов или их фильтрации).Может NSTableView сделать это с его строками?

Есть что-нибудь еще, что я должен рассмотреть?

Это было полезно?

Решение

  1. Разница здесь в том, что в табличном представлении каждая строка представляет собой один элемент, а столбцы показывают разные аспекты (свойства) этого элемента.В представлении коллекции каждое пересечение строки и столбца представляет собой один элемент.
  2. Я этого не делал, но попробуйте реализовать tableView:didClickTableColumn: в вашем табличном представлении делегируйте.Этот метод является новым в версии 10.6.Вам нужно было бы получить [NSApp currentEvent], и, вероятно, передайте его методу в ячейке столбца.
  3. С помощью табличного представления вы привязываете столбец;вы не привязываете представление (во всяком случае, не для предоставления контента;вы действительно привязываете представление к таким вещам, как индексы выбора).В представлении коллекции нет столбцов (см. # 1), поэтому вы всегда привязываете представление.
  4. Нет.

Другие советы

FWIW, NSTableView - это очень старая часть AppKit, и она немного грубовата.

Если вы новичок в платформе, я бы рекомендовал сначала ознакомиться с NSCollectionView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top