Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Руководство по программированию часов Apple

PDF
На этой странице

Таблицы

Используйте таблицы для дисплейных списков данных, содержание которых изменяется динамично. WatchKit поддерживает таблицы отдельного столбца с помощью WKInterfaceTable класс. Отображение данных в таблице требует, чтобы определение расположения для Ваших данных заранее и записи кода заполнило таблицу фактическими данными во время выполнения. В частности необходимо сделать следующее в проекте XCode:

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

Конфигурирование контроллеров строки

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

Добавить контроллеры строки к таблице
  1. Выберите объект таблицы в своем файле раскадровки.

  2. Откройте инспектора Атрибутов.

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

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

Каждый контроллер строки поддерживается пользовательским классом, который Вы используете для доступа к содержанию строки. Большинство классов контроллера строки содержит только свойства для доступа к интерфейсным объектам строки — немногие содержат любой код. Однако, если Вы добавляете кнопки или другие интерактивные средства управления к строке, Ваш класс строки может также включать методы действия для ответа на взаимодействие с пользователем с теми средствами управления.

Определить пользовательский класс для Вашего контроллера строки
  1. Добавьте новый Сенсорный класс Какао своего расширения WatchKit.

  2. Сделайте свой новый класс подклассом NSObject.

  3. Добавьте объявленные свойства для каждой метки, изображения или управления, к которому Вы планируете получить доступ во время выполнения. Используйте следующий формат для заявленных свойств, изменяя класс для соответствия класса соответствующего интерфейсного объекта:

    • @property (weak, nonatomic) IBOutlet WKInterfaceLabel* label; // Objective-C

Перечисление 10-1 показывает демонстрационное определение класса контроллера строки. В этом примере класс содержит выходы для изображения и метки.

Перечисление 10-1A демонстрационного класса для управления строкой

Swift

  • class MainRowType: NSObject {
  • @IBOutlet weak var rowDescription: WKInterfaceLabel!
  • @IBOutlet weak var rowIcon: WKInterfaceImage!
  • }

Objective C

  • @interface MainRowType : NSObject
  • @property (weak, nonatomic) IBOutlet WKInterfaceLabel* rowDescription;
  • @property (weak, nonatomic) IBOutlet WKInterfaceImage* rowIcon;
  • @end

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

Сконфигурировать контроллер строки в Вашей раскадровке
  1. В Вашем файле раскадровки выберите объект контроллера строки.

  2. Установите атрибут Идентификатора контроллера строки в уникальное значение для таблицы.

    Вы используете идентификатор позже при создании строк таблицы. Значение должно быть уникальным среди типов строки таблицы, но фактическое значение по Вашему усмотрению. Установите это значение в инспекторе Атрибутов.

  3. Установите класс контроллера строки к Вашему пользовательскому классу. Установите это значение в инспекторе Идентификационных данных.

  4. Соедините метки и другие элементы к выходам в Вашем пользовательском классе.

    Соединение элементов в Вашем файле раскадровки к Вашим выходам связывает два. WatchKit нужна эта информация для создания интерфейсных объектов строки во время выполнения.

Рисунок 10-1 показывает пример контроллера строки, сконфигурированного с идентификатором mainRowType и класс MainRowType, который определяется в Перечислении 10-1. rowDescription и rowIcon выходы в том классе подключены к изображению и маркируют объекты в строке.

Фигурируйте 10-1Examining контроллер строки в XCode image: ../Art/table_row_definition_2x.png

Конфигурирование содержания таблицы во время выполнения

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

Создать и сконфигурировать строки таблицы
  1. Определите число и тип строк, которые Вы хотите, на основе данных, которые Вы хотите вывести на экран.

  2. Используйте setRowTypes: или setNumberOfRows:withRowType: метод для создания строк.

    Оба метода создают строки в Вашем интерфейсе и инстанцируют соответствующего класса каждой строки в Вашем расширении WatchKit. Инстанцированные классы сохранены в таблице и могут быть получены доступ с rowControllerAtIndex: метод.

  3. Выполните итерации по строкам с помощью rowControllerAtIndex: метод.

  4. Используйте объекты контроллера строки сконфигурировать содержание строки.

setRowTypes: и setNumberOfRows:withRowType: методы инстанцируют классов, связанных с соответствующими контроллерами строки. Сразу после вызова одного из тех методов, Вы получаете недавно создаваемые объекты контроллера строки и используете их для конфигурирования строк. Перечисление 10-2 использует некоторые предоставленные данные для конфигурирования метки и изображения для строки. Данные предоставлены массивом пользовательских объектов данных типа MyDataObject. ( MyDataObject класс представляет строку и изображение как свойства, и его реализация не показана здесь.) Сами строки являются экземплярами пользовательского MainRowType класс, определяющийся в Перечислении 10-1.

Перечисление 10-2Creating и конфигурирование строк таблицы
  • - (void)configureTableWithData:(NSArray*)dataObjects {
  • [self.table setNumberOfRows:[dataObjects count] withRowType:@"mainRowType"];
  • for (NSInteger i = 0; i < self.table.numberOfRows; i++) {
  • MainRowType* theRow = [self.table rowControllerAtIndex:i];
  • MyDataObject* dataObj = [dataObjects objectAtIndex:i];
  • [theRow.rowDescription setText:dataObj.text];
  • [theRow.rowIcon setImage:dataObj.image];
  • }
  • }

При конфигурировании таблиц можно улучшить производительность путем ограничения числа строк, которые Вы создаете первоначально. Но потому что строки таблицы должны все быть созданы, передняя сторона, создавая большие количества строк может оказать негативное влияние на производительность Вашего приложения. Точное число строк зависит от сложности Ваших данных и сколько времени это берет Вас, чтобы создать каждого, но рассмотреть хранение общего количества строк к 20 или меньше. Для таблиц, требующих большего количества строк, считайте загрузку только подмножеством строк первоначально и затем предоставьте пользователю средства управления для загрузки большего количества строк. Еще лучшее решение состоит в том, чтобы вывести на экран только самое важное подмножество строк. Например, Вы могли бы использовать данные расположения для ограничения числа строк тем, которые наиболее относятся к текущему расположению пользователя.

Обработка выборов строки

Контроллер интерфейса ответственен за обработку выборов строки в любых таблицах, которыми это владеет. Когда пользователь касается строки таблицы, WatchKit выбирает строку и вызывает table:didSelectRowAtIndex: метод контроллера интерфейса. Используйте тот метод для выполнения соответствующих действий для приложения. Например, Вы могли бы вывести на экран новый контроллер интерфейса или обновить содержание строки. Если Вы не хотите, чтобы строка таблицы можно выбрать, отмените выбор опции Selectable для соответствующего контроллера строки в Вашей раскадровке.