美文网首页watchOS
watchOS系统开发 - WKInterfaceTable(5

watchOS系统开发 - WKInterfaceTable(5

作者: 冰三尺 | 来源:发表于2017-08-02 20:56 被阅读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

    相关文章

      网友评论

        本文标题:watchOS系统开发 - WKInterfaceTable(5

        本文链接:https://www.haomeiwen.com/subject/ishylxtx.html