WKInterfaceTable类似于iOS中的UITableView, 与UITableView不同的是, WKInterfaceTable没有section的概念.
屏幕快照 2017-08-02 下午4.24.30.pngtable使用
首先, 在sb中添加一个controller, 然后在controller里面添加一个WKInterfaceTable控件
像下面这样, 每一个WKInterfaceTable默认有两个占位的控件, 一个Table Row一个Group
屏幕快照 2017-08-02 下午5.42.56.jpg
接下来添加两个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")
最终效果
Jietu20170802-205457-HD.gif
网友评论