WKInterfaceTable
Наследование
-
NSObject
-
WKInterfaceObject
-
WKInterfaceTable
-
NSObject
-
WKInterfaceObject
-
WKInterfaceTable
Оператор импорта
Swift
import WatchKit
Objective C
@import WatchKit;
Доступность
Доступный в iOS 8.2 и позже.
A WKInterfaceTable
объект создает и управляет содержанием табличного интерфейса отдельного столбца. Вы используете объект таблицы, чтобы определить номер и тип строк и сконфигурировать объекты данных для тех строк.
Конфигурирование объекта таблицы и заполнение его с данными требуют нескольких шагов:
Определите один или несколько типов контроллера строки в своей раскадровке.
Определите пользовательский класс данных для управления содержанием каждого типа строки.
Скажите объекту таблицы сколько строк (и какой тип) отображать во время выполнения.
Используйте экземпляры своего пользовательского класса данных для конфигурирования содержания каждой строки.
Не разделяйте на подклассы или создавайте экземпляры этого класса сами. Вместо этого определите выходы в своем классе контроллера интерфейса и подключите их к соответствующим объектам в Вашем файле раскадровки. Например, для обращения к объекту таблицы в интерфейсе определите свойство с помощью следующего синтаксиса в классе контроллера интерфейса:
Swift
@IBOutlet weak var myTable: WKInterfaceTable!
Objective C
@property (weak, nonatomic) IBOutlet WKInterfaceTable* myTable;
Во время инициализации Вашего контроллера интерфейса WatchKit создает новый экземпляр этого класса и присваивает его Вашему выходу. В той точке можно использовать объект в выходе для внесения изменений в таблицу.
Определение строк таблицы
После добавления объекта таблицы к Вашей раскадровке сконфигурируйте контроллер строки, идущий с таблицей. Контроллер строки определяет появление определенного типа строки. Таблица идет с одним типом строки первоначально, и можно добавить более позже. Каждый контроллер строки в Вашей таблице требует, чтобы некоторая минимальная конфигурация была применима во время выполнения.
Каждый контроллер строки должен иметь имя, которое Вы определяете использование свойства Identifier в инспекторе Атрибутов. Вы используете это имя для создания строк того типа позже.
Каждый контроллер строки должен иметь связанный класс, который Вы устанавливаете в инспекторе Идентификационных данных. Во время выполнения таблица создает экземпляры Ваших классов контроллера строки для каждой строки в таблице.
Для конфигурирования содержания контроллера строки перетащите элементы из библиотеки и отбросьте их на группу строки. Для большинства строк Вы захотите использовать объект группы в качестве объекта верхнего уровня. Можно также вложить объекты группы создать вертикальные и горизонтальные расположения относительно интерфейсных объектов. Той группе добавьте, что объекты должны были вывести на экран содержание строки. Рисунок 1 показывает, как сконфигурированная строка появляется в XCode.
Каждому контроллеру строки нужен класс для управления содержанием строки во время выполнения. Класс действует как прокси для строки в Вашем коде и хранит выходы, необходимо сконфигурировать содержание строки. Перечисление 1 показывает определение пользовательского MyRowController
класс, который мог использоваться для контроллера строки на рисунке 1.
Swift
class MyRowController: NSObject {
@IBOutlet weak var todoItem: WKInterfaceLabel!
@IBOutlet weak var actionButton: WKInterfaceButton!
}
Objective C
@interface MyRowController : NSObject
@property (weak, nonatomic) IBOutlet WKInterfaceLabel* todoItem;
@property (weak, nonatomic) IBOutlet WKInterfaceButton* actionButton;
@end
Определение номера строк во время выполнения
Для заполнения табличного объекта интерфейса данными используйте setRowTypes:
или setNumberOfRows:withRowType:
метод. Эти методы указывают тип (и число) строк для добавления к таблице. Если все строки имеют тот же тип, используйте setNumberOfRows:withRowType:
метод. При использовании больше чем одного контроллера строки в таблице используйте setRowTypes:
метод. Строка типа строки соответствует имени, Вы ввели в свойство Identifier для того контроллера строки в Вашей раскадровке.
Когда Вы добавляете строки к таблице, WatchKit создает строки на Часах Apple и инстанцирует классов, соответствующих тем строкам в Вашем расширении WatchKit. Недавно инстанцированные классы сохранены внутренне объектом таблицы и сделаны доступный для Вас через rowControllerAtIndex:
метод. Используйте тот метод для получения каждого контроллера строки, возражают и конфигурируют содержание строки.
Перечисление 2 показывает пример того, как конфигурируют объект таблицы от Вашего контроллера интерфейса. todoItems
свойство, на которое ссылается метод, является пользовательским свойством, содержащим WKInterfaceTable
сконфигурированный объект. После получения данных для строк, вызовы метода setNumberOfRows:withRowType:
метод для создания строк. Это тогда выполняет итерации по недавно создаваемым объектам контроллера строки, конфигурирование каждой метки с текстом для к - делает элемент.
- (void)loadTodoItems {
// Fetch the to-do items
NSArray* items = [self fetchTodoList];
// Configure the table object (self.todoItems) and get the row controllers.
[self.todoItems setNumberOfRows:items.count withRowType:@"default"];
NSInteger rowCount = self.todoItems.numberOfRows;
// Iterate over the rows and set the label for each one.
for (NSInteger i = 0; i < rowCount; i++) {
// Get the to-do item data.
NSString* itemText = items[i];
// Assign the text to the row's label.
MyRowController* row = [self.todoItems rowControllerAtIndex:i];
[row.todoItem setText:itemText];
}
}
Когда Вы захотите обновить содержание таблицы, вызвать setRowTypes:
или setNumberOfRows:withRowType:
снова с новой строкой вводят информацию. Вызов этих методов снова вынуждает таблицу отбросить старые строки и создать новые. Для вставки новых строк, не удаляя старые используйте insertRowsAtIndexes:withRowType:
метод.
Ответ на касания в строках таблицы
Для ответа на касания в строке таблицы реализуйте контроллер интерфейса table:didSelectRowAtIndex:
метод. Используйте тот метод, чтобы представить различный контроллер интерфейса или выполнить любые другие соответствующие задачи.
Соедините интерфейсом с параметрами конфигурации разработчика
XCode позволяет Вам сконфигурировать информацию о своем табличном объекте интерфейса в Вашем файле раскадровки. Таблица 1 перечисляет атрибуты, которые можно сконфигурировать в раскадровке и их значении.
Атрибут |
Описание |
---|---|
Строки |
Число контроллеров строки поддерживается таблицей. Измените значение, чтобы добавить или удалить новые объекты контроллера строки к файлу раскадровки. |
Фон |
Фоновое изображение для отображения позади элементов таблицы. Не устанавливайте изображение, если Вы хотите, чтобы цвет фона или изображение базового контроллера интерфейса были видимы. |
Цвет |
Цвет фона для таблицы. Выберите цвет, чтобы очиститься, если Вы хотите, чтобы цвет фона или изображение базового контроллера интерфейса были видимы. |
Для каждого контроллера строки в Вашей таблице Таблица 2 перечисляет атрибуты, которые можно сконфигурировать и их значение.
Атрибут |
Описание |
---|---|
Идентификатор |
Имя раньше идентифицировало тип контроллера строки для |
Можно выбрать |
Флажок, указывающий, включены ли строки этого типа и tappable. Когда эта опция отключена, касание строки не выделяет строку или сообщает о действии таблице. |
-
Создает контроллеры строки для использования в заполнении таблицы с данными.
Объявление
Swift
func setRowTypes(_
rowTypes
: [AnyObject])Objective C
- (void)setRowTypes:(NSArray *)
rowTypes
Параметры
rowTypes
Массив строк, каждая из которых соответствует имени контроллера строки, определенного в Вашем файле раскадровки. Общее количество элементов в этом массиве является числом строк, которые будут создаваться в таблице.
Обсуждение
Используйте этот метод, когда Вы захотите вывести на экран больше чем один тип строки в Вашей таблице. Этот метод удаляет любые существующие строки из таблицы и конфигурирует новый набор строк на основе информации в
rowTypes
параметр. Для каждой строки метод также создает экземпляр класса той строки и помещает полученный объект во внутренний массив, который Вы получаете доступ к использованиюrowControllerAtIndex:
метод. Это - Ваша ответственность сконфигурировать каждый новый контроллер строки с данными, которые Вы хотите вывести на экран.Порядок строк в
rowTypes
параметр решает, что порядок контроллера строки возражает получению использованияrowControllerAtIndex:
метод, с первым типом строки, используемым для создания контроллера строки в индексе 0, второй тип строки раньше создавал контроллер строки в индексе 1 и т.д.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
Создает конкретное количество контроллеров строки (того же типа) для использования в заполнении таблицы с данными.
Объявление
Параметры
numberOfRows
Общее количество строк для отображения в таблице.
rowType
Имя контроллера строки определяется в Вашем файле раскадровки. Эта строка соответствует значению в атрибуте Идентификатора определения контроллера строки в Вашем файле раскадровки.
Обсуждение
Используйте этот метод, когда Вы хотите заполнить таблицу со строками, которые являются всем тем же типом. Этот метод удаляет любые существующие строки из таблицы и конфигурирует новый набор строк на основе информации в
numberOfRows
иrowType
параметры. Для каждой строки метод также создает экземпляр класса той строки и помещает полученный объект во внутренний массив, который Вы получаете доступ к использованиюrowControllerAtIndex:
метод. Это - Ваша ответственность сконфигурировать каждый новый контроллер строки с данными, которые Вы хотите вывести на экран.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
numberOfRows
СвойствоЧисло контроллеров строки, доступных для Вас для получения. (только для чтения)
Объявление
Swift
var numberOfRows: Int { get }
Objective C
@property(nonatomic, readonly) NSInteger numberOfRows
Обсуждение
Значение этого свойства
0
пока Вы не вызываетеsetRowTypes:
илиsetNumberOfRows:withRowType:
метод. После вызова одного из тех методов это свойство содержит число создававшихся контроллеров строки.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
Возвращает контроллер строки для строки в указанном индексе в таблице.
Объявление
Swift
func rowControllerAtIndex(_
index
: Int) -> AnyObject?Objective C
- (id)rowControllerAtIndex:(NSInteger)
index
Параметры
index
Основанный на нуле индекс строки. Этот параметр должен быть между нулем и общим количеством строк, указанных в
numberOfRows
свойство.Возвращаемое значение
Объект контроллера строки, или
nil
если еще нет никаких контроллеров строки илиindex
выходит за пределы.Обсуждение
Вызовите
setRowTypes:
илиsetNumberOfRows:withRowType:
метод перед использованием этого метода для получения любых контроллеров строки. После вызова одного из тех методов таблица создает контроллеры строки для каждого типа строки и хранит их внутренне в массиве. Используйте этот метод для получения тех контроллеров строки.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
Вставляет строки в таблицу в указанных индексах.
Объявление
Swift
func insertRowsAtIndexes(_
rows
: NSIndexSet, withRowTyperowType
: String)Objective C
- (void)insertRowsAtIndexes:(NSIndexSet *)
rows
withRowType:(NSString *)rowType
Параметры
rows
Индексный набор, содержащий расположения для новых строк. Каждый новый объект контроллера строки вставляется в массив контроллеров строки поочередно и в указанном индексе после того, как были сделаны более ранние вставки.
rowType
Тип контроллеров строки для вставки. Эта строка соответствует значению в атрибуте Идентификатора определения контроллера строки в Вашем файле раскадровки.
Обсуждение
Этот метод вставляет новые контроллеры строки в существующий массив контроллеров строки с помощью семантики, определенной
insertObjects:atIndexes:
методNSMutableArray
.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
Удаляет указанные строки из таблицы.
Объявление
Swift
func removeRowsAtIndexes(_
rows
: NSIndexSet)Objective C
- (void)removeRowsAtIndexes:(NSIndexSet *)
rows
Параметры
rows
Индексный набор, соответствующий строкам, Вы хотите удалить. Если какой-либо из индексов недопустим, этот метод повышает исключение.
Обсуждение
Этот метод удаляет контроллеры строки из таблицы с помощью той же семантики, определенной
removeObjectsAtIndexes:
методNSMutableArray
.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.
-
Прокручивает строку в указанном индексе в представление.
Объявление
Swift
func scrollToRowAtIndex(_
index
: Int)Objective C
- (void)scrollToRowAtIndex:(NSInteger)
index
Параметры
index
Индекс строки, которая будет выведена на экран. Указание индекса меньше, чем
0
прокрутки к верхней части списка. Указание индекса, больше, чем общее количество контроллеров строки, прокручивает к нижней части списка.Оператор импорта
Objective C
@import WatchKit;
Swift
import WatchKit
Доступность
Доступный в iOS 8.2 и позже.