Таблицы (NSTableView)

Mac OS X

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

В Mac OS X 10.6 и более ранних версиях каждая отдельная ячейка в таблице должна была быть подклассом NSCell. Такой подход вызвал ограничения при проектировании сложных пользовательских ячеек, как правило, требовалось писать свой ​​подкласс NSCell. Кроме того, предоставление анимации, такой как линия прогресса, было чрезвычайно трудоемко. Эти типы таблиц называют cell-based таблицами.

В Mac OS X 10.7 просмотра таблицы были изменены и теперь поддерживает использование представление Вида в виде отдельных ячеек. Они называются также view-based таблицами. Вид на основе view-based таблиц позволяет создавать собственные ячейки в Interface Builder в Xcode 4.0. Они позволяют легко макетировать во время проектирования. Как и cell-based таблицы, таблицы view-based поддерживают выбор, колонок увлечение и другие поведенчиские функции. Разница лишь в том, что разработчику дано гораздо больше гибкости в разработке и реализации.

Создавая cell-based и view-based таблицы в Interface Builder используют одни и те же методы. Различия возникают в коде приложения при предоставлении отдельных ячеек, заполнении содержанием таблицы, а также настройке внешнего вида таблицы. Кроме того, методы привязки Cocoa совершенно различны между этими двумя реализациями.

View-Based таблицы

Виды на основе view-based таблицы, обеспечивают богатые возможности во время проектирования. Сам по себе NSTableCellView отображает ImageView и textField. Это было общее требование к cell-based таблицам, и это всегда требовалось от подклассов. Вы можете создавать экземпляры прототипы ячеек NSTableCellView в Interface Builder, просто перетащив их из библиотеки и бросая их в соответствующем столбце таблицы. После этого есть возможность изменить существующие подвиды, перемещение, изменение размера и скрытие ячеек. Поддержка VoiceOver предоставляется автоматически при использовании NSTableCellView в случаях, когда содержимое текстового поля, по умолчанию, используется в качестве текста, который будет проговариваться.

Поскольку классы Видов поддерживают анимацию их содержимого, можно анимировать содержимое NSTableCellView, просто используя стандартные возможности анимации видов. Кроме того, NSProgressIndicator просто работают в виде на основе ячеек, устраняя сложные реализации NSCell подклассов.

Каждый экземпляр NSTableCellView вставляется как подвид экземпляра NSTableRowView. Каждая строка представляет экземпляр NSTableRowView. Вид ряда (row view) отвечает за отрисовку индикатора выбора, а также различных (не обязательно) визуальных стилей. Приложение может изменить NSTableRowView добавив пользовательский фоновый рисунок, пользовательскую подсветку поведения, и другие визуальные аспекты, не доступные в качестве опций к виду ряда.

Обычно используют Interface Builder для разработки и макетирования NSTableRowView прототипов строк в таблице. Они могут быть получены программно во время выполнения. Реализация подкласса NSTableRowView совершенно не обязательна.

Cell-Based таблицы

В более ранних версиях Mac OS X все таблицы основаны исключительно на подклассах NSCell, которые используются для отображения каждой ячейки в таблице. В каждой строке и столбце в таблице используется подкласс NSCell. Это было приемлемое решение, которое позволило реализовать дизайн таблицы, используя стандартные элементы управления Cocoa. Тем не менее, создание любой ячейки с содержимым не предусмотренным подклассом NSCell требует, чтобы вы написали свой собственный подкласс, который мог быть сложным и трудоемким. В то время как для view-based таблицы может потребоваться написание пользовательского вида, что гораздо проще, чем писать подкласс NSCell.

Cell-Based таблицы по-прежнему поддерживаются.

Источники данных и делегирование

Объекты NSTableView должны иметь источник данных, придерживаясь шаблона Модель-Вид-Контроллер.

Класс источника данных (NSTableViewDataSource) является связующим звеном между табличным представлением (Видом) и моделью таблицы обработки данных. Источник данных также несет ответственность за реализацию поддержки по обеспечению таблицы данными модели в формат, который позволяет не только копирование данных и перетаскивание строк. Источник данных также несет ответственность за определение входящего действия drag-and-drop.

Делегат класса (NSTableViewDelegate Protocol) позволяет настраивать поведение таблицы, не требуя реализации подклассов таблицы. Он поддерживает управление столбцами таблицы, функцией типа-выбора, независимо от конкретной строки должен позволить выбор, среди других методов.

Источник данных и делегат часто (но не обязательно) один и тот же объект. Обязанности источника данных и объекта делегирования будут отличаться в зависимости от того является ли таблица cell-based или view-based. Функции как делегата так и класса источника данных различаются, когда Cocoa используюет связывание для заполнения таблицы.

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac