watchOS系统开发 - WKInterfaceTable(5
2017-08-02 本文已影响20人
冰三尺
WKInterfaceTable类似于iOS中的UITableView, 与UITableView不同的是, WKInterfaceTable没有section的概念.

table使用
首先, 在sb中添加一个controller, 然后在controller里面添加一个WKInterfaceTable控件
像下面这样, 每一个WKInterfaceTable默认有两个占位的控件, 一个Table Row一个Group

接下来添加两个label, 设置Group的Layout为Vertical, 让label垂直排列, 设置Size的Height为Size To Fit Content, 让Group的大小根据label的内容自适应.
在iOS中每一个TableViewController都是使用TableViewCell进行显示的, 但是在WatchOS中, 很抱歉, 没有cell, 在WatchOS中, 可以直接使用继承自NSObject的对象来表示cell.
我们新建一个table row, 并把两个label进行outlet链接
import WatchKit
class RecipeRowController: NSObject {
@IBOutlet var titleLabel: WKInterfaceLabel!
@IBOutlet var ingredientsLabel: WKInterfaceLabel!
}
在iOS中, 采用delegate和dataSource的方式来组织数据与进行事件的代理回调, 但是在WatchOS中, 也没有. 在WatchOS中, 我们采用更直接的方式, 有两个方发用来显示数据.
首先需要把WKInterfaceTable连接到控制器
@IBOutlet var table: WKInterfaceTable!
接下里设置数据源, 与显示数据
//这个方法用来设置显示几个cell, 第一个参数是个数, 第二个参数是cell的唯一标识符(标识符的设置方法与TableViewCell的设置方法一样)
table.setNumberOfRows(10, withRowType: "RecipeRowType")
这个方法是通过index来获取对应的cell
let controller = table.rowController(at: 2) as! RecipeRowController
controller.titleLabel.setText("recipe.name")
controller.ingredientsLabel.setText(" ingredients")
最终效果
