拖一个WKInterface table对象到storyboard中时,Xcode默认创建一个初始化的行控制器,但是你也可以自己添加更多的行。当你在拖一个table对象到storyboard 中时,这个table的结构是Table->Table Row Controller->Group,创建方法如下:
- 在storyboard中选择table对象(选择的时候不要直接点击storyboard中的table对象,这个只能选中Table下的Group,而要先打开Document Outline,从侧边导航栏中选择Table)
- 打开Attributes inspector
- Rows属性就是用来控制行数的
每一行最终就是一个group,所以在group中可以添加想加的控件如:labels,images等等。效果如下图:
接下来为行控制器定义一个类用来编辑行里的控件:
- 为WatchKit extension新建一个Cocoa Touch类
- 使你的新类继承NSObject
- 为行里的控件添加property或者action(可能部分人添加property时会出现错误,那是因为没有包含头文件 #import <WatchKit/WatchKit.h>)//吐槽一下,官网上也不提醒一下
如果是多行还得为每一行定义一个独一无二的identifier:
- 在storyboard中选择行控制器对象
- 为每一行设置identifier
- 为行控制器设置类,就是选择Row Controller后在Identity inspector->Custom Class->Class中填自己定义的类名
- 将控件和属性连接起来
前三个步骤如下面三个截图,控件和属性连接就不用我说了吧(注意一定要选择row controller,如下图的mainRowType)
下面就和tableViewController中差不多,在运行时配置每一行的内容即在interface controller中添加如下代码:
- (void)configureTableWithData:(NSArray*)dataObjects {
[self.table setNumberOfRows:[dataObjects count] withRowType:@"mainRowType"];
for (NSInteger i = 0; i < self.table.numberOfRows; i++) {
RowController* theRow = [self.table rowControllerAtIndex:i];
[theRow.rowLabel setText:[dataObjects objectAtIndex:i]];
}
}
如果要编辑选中的一行的话,可以实现table:didSelectRowAtIndex:
方法。
最后贴一张运行的效果图: