Table View - табличное видовое представление

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

UITableView iOS example

Табличные представления реализованы в классе UITableView, каждая ячейка таблицы в классе UITableViewCell, нижний колонтитул и заголовок в классе UITableViewHeaderFooterView.

Настройка Table View

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

Контент для Table View

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

Каждая отдельно взятая ячейка может отображать различные варианты контента. Ячейки могут использовать стиль по умолчанию, могут отображать изображения и текстовые метки. Вы можете установить изображение в ячейке программно, используя свойство image или в инспекторе атрибутов в поле Image, если ячейка используется в одном из стандартных стилей. Также вы можете установить программно свойства textLabel и detailTextLabel.

Весь контент ячейки (изабражение, текст, какие либо пользовательские виды) располагается в ее виде контента. Если вы захотите кастомизировать вашу ячейку за пределы стандартных стилей, вы можете установить стьль ячейки в пользовательский (custom) и добавить ваш пользовательский вид в contentView ячейки программно.

Каждая таблица и ее секция может иметь заголовок и нижний колонтитул для отображения текста или пользовательского контента. Вы можете использовать их для отображения дополнительной информации об таблице или секции. Класс UITableViewHeaderFooterView реализует переиспользуемый вид, который вы можете разместить вверху или внизу таблицы или секции.

Заголовок и нижний колонтитул может отображать текстовую метку и опционально детализированный текст или пользовательский контент. Вы можете установить свойства textLabel и detailTextLabel программно. В качестве альтернативы вы можете разместить ваш пользовательский вид в заголовок или нижний колонтитул через свойство contentView программно. Если вы использовали пользовательский вид в заголовке или нижнем колонтитуле, не используйте стандартные textLabel и detailTextLabel, вместо этого добавьте необходимые вам текстовые метки в ваш пользовательский вид.

Поведение Table View

Табличные представления нуждаются в делегате (delegate) для управления внешним видом и поведением. Назначение контроллера вида в качестве делегата Table View требует реализации каких либо методов UITableViewDelegate протокола, через делегат вы также можете отслеживать выбор ячеек, настраивать заголовки и нижние колонтитулы, помогать удалять и реорганизовывать ячейки, а также осуществлять другие действия.

Стиль выбора (поле Selection) контролирует количество ячеек, которое пользователь может выбрать за раз. Существует три типа выбора для каждой ячейки в таблице: одиночный (single), множественный (multiple) и никакой (none). Таблица могут иметь различные типы выбора в нормальном режиме и режиме редактирования. Например вы можете позволить пользователю выбирать множество ячеек в нормальном режиме, но удалять только одну за один раз в режиме редактирования. В Interface Builder вы задаете стиль выбора для нормального режима, используя поле Selection, и для режима редактирования, используя поле Editing.

Нереиспользуемый идентификатор это строка для идентификации ячейки, которая будет использована для множества строк в табличном представлении (для повышения производительности). Вы можете задать это в свойстве reuseIdentifier программно или в поле Identifier инспектора атрибутов Interface Builder.

Вы можете установить значения отступа для контента ячейки через поля Level (свойство indentationLevel) и Width (свойство indentationWidth) секции Indentation. Значение Width применяется для каждого уровня отступа. Вы можете указать использовать отступ в режиме редактирования, выбрав опцию Indent While Editing (свойство shouldIndentWhileEditing).

Выбор опции Shows Re-order Controls (свойство showsReorderControl) приведет к тому, что ячейка выведет элемент управления, позволяющий изменить порядок ее в таблице, находящейся в режиме редактирования. Однако вы должны также реализовать метод tableView:moveRowAtIndexPath:toIndexPath:, UITableViewDataSource протокола, и возвращать YES из метода tableView:canMoveRowAtIndexPath:. Эта часть должна быть выполнена программно.

Чтобы осведомить таблицу о заголовке и нижнем колонтитуле, вам нужно зарегистрировать их. Вы должны сделать это с помощью методов registerNib:forCellReuseIdentifier: или registerClass:forCellReuseIdentifier:. По подобию ячеек таблицы, заголовки и нижние колонтитулы переиспользуют идентификатор (Identifier) представляющий строку, для многократного создания их в таблице. Используйте метод initWithReuseIdentifier: при их инициализации.

Внешний вид Table View

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

Стиль

Стиль сепаратора задает, как визуально будут разделяться ячейки таблицы. Вы можете задать свой стиль и цвет разделителя ячеек, используя поле Separator инспектора атрибутов или свойства separatorStyle и separatorColor.

Стиль таблицы влияет на внешний вид табличных секций. У таблицы есть два стиля: простой и сгрупированный. Выбрать стиль можно в поле Style инспектора атрибутов или пучем изменения свойства style.

Стиль выбранной ячейки задается в поле Selection (свойство selectionStyle) и может быть: gray, blue или none.

Типы дополнений (Accessory)

Вы можете задать типы дополнений для нормального режима и режима редактирования через поля Accessory (свойство accessoryType) и Editing Acc. (свойство editingAccessoryType). Значение этого свойства задекларировано как:

typedef enum : NSInteger {
   UITableViewCellAccessoryNone,
   UITableViewCellAccessoryDisclosureIndicator,
   UITableViewCellAccessoryDetailDisclosureButton,
   UITableViewCellAccessoryCheckmark,
   UITableViewCellAccessoryDetailButton 
} UITableViewCellAccessoryType;

В качестве альтернативы вы можете использовать пользовательские виды и установить свойства accessoryView и editingAccessoryView программно. Эти пользовательские виды имеют приоритет над стандартными типами дополнений, если вы задали эти виды то свойства accessoryType и editingAccessoryType соответственно проигнорируются.

Пример реализации табличного представления

Пример реализации табличного представления приведен в разделе: Примеры iOS, Table View.

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