自定义WKInterfaceTable行中的WKInterfaceLabel展开为nil

时间:2015-07-03 06:20:36

标签: ios swift watchkit wkinterfacetable wkinterfacelabel

标题总结了它。我已经尝试断开/重新连接所有IBOutlets。这是我在InterfaceController上设置WKInterfaceTable的代码:

func setupLoadingTable () {
    self.myTable.setNumberOfRows(1, withRowType:"universalRowID")

    for (var i = 0; i<self.myTable.numberOfRows; i++){
        var row = self.myTable.rowControllerAtIndex(i) as! UniversalRowView
        row.mainTitle.setText("Hello world") //THIS THROWS AN ERROR
    }
}

这是我的UniversalRowView的代码,它是我的自定义行类:

import WatchKit

class UniversalRowView: NSObject {

    @IBOutlet weak var mainTitle: WKInterfaceLabel!
    @IBOutlet weak var subTitle: WKInterfaceLabel!

}

桌面的IBOutlets已正确连接。 Storyboard上的行设置为UniversalRowView类型,两个标签的出口都已正确连接。

该行:

row.mainTitle.setText("Hello world")

引发以下错误:“致命错误:在解包可选值时意外发现nil”

此外,当我将该代码注释掉时,我在模拟器上看不到它们出现在Storyboard上的库存WKInterfaceLabels。我觉得这也是一个错误,但我不知道该怎么做。

修改:在willActivate()中调用setupLoadingTable()

2 个答案:

答案 0 :(得分:5)

我明白了!似乎在WKInterfaceTable和WKInterfaceLabel的视图中都有一个属性叫做#34; 38mm Installed&#34;。问题是,我在42毫米上运行模拟器,但我只检查了38毫米

检查完两个属性后,一切都按计划进行!

这是我所指的屏幕截图:

enter image description here

答案 1 :(得分:2)

我遇到了同样的问题,对我而言,这是因为我为我的WKInterfaceLabel title命名了IBOutlet,因为它也是NSObject中方法的名称。