watchOS

watchOS系统开发 - WKInterfaceTable(5

2017-08-02  本文已影响20人  冰三尺

WKInterfaceTable类似于iOS中的UITableView, 与UITableView不同的是, WKInterfaceTable没有section的概念.

屏幕快照 2017-08-02 下午4.24.30.png

table使用
首先, 在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
上一篇下一篇

猜你喜欢

热点阅读