自定义 WKInterfaceTable 行中的 WKInterfaceLabel 展开为 nil
WKInterfaceLabel in custom WKInterfaceTable row unwrapping to nil
标题总结了它。我试过 disconnecting/reconnecting 所有的 IBOutlets。这是我设置 WKInterfaceTable:
的 InterfaceController 上的代码
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 的代码,它是我的自定义行 class:
import WatchKit
class UniversalRowView: NSObject {
@IBOutlet weak var mainTitle: WKInterfaceLabel!
@IBOutlet weak var subTitle: WKInterfaceLabel!
}
Table 的 IBOutlets 已正确连接。 Storyboard 上的行设置为类型 UniversalRowView 并且两个标签的插座已正确连接。
行:
row.mainTitle.setText("Hello world")
抛出以下错误:"fatal error: unexpectedly found nil while unwrapping an Optional value"
此外,当我注释掉该代码时,我没有在模拟器上看到 Storyboard 上显示的库存 WKInterfaceLabels。我觉得这也是一个错误,但我不知道该怎么做。
编辑:在 willActivate()
中调用 setupLoadingTable()
我想通了!似乎在 WKInterfaceTable 和 WKInterfaceLabel 的视图中都有一个名为“38mm Installed”的属性。问题是,我是 运行 42mm 的模拟器 但我只检查了 38mm 。
检查完这两个属性后,一切都按计划进行!
这是我所指内容的屏幕截图:
我遇到了同样的问题,对我来说,这是因为我为我的 WKInterfaceLabel 命名了 IBOutlet title
,事实证明这也是 NSObject 中方法的名称。
标题总结了它。我试过 disconnecting/reconnecting 所有的 IBOutlets。这是我设置 WKInterfaceTable:
的 InterfaceController 上的代码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 的代码,它是我的自定义行 class:
import WatchKit
class UniversalRowView: NSObject {
@IBOutlet weak var mainTitle: WKInterfaceLabel!
@IBOutlet weak var subTitle: WKInterfaceLabel!
}
Table 的 IBOutlets 已正确连接。 Storyboard 上的行设置为类型 UniversalRowView 并且两个标签的插座已正确连接。
行:
row.mainTitle.setText("Hello world")
抛出以下错误:"fatal error: unexpectedly found nil while unwrapping an Optional value"
此外,当我注释掉该代码时,我没有在模拟器上看到 Storyboard 上显示的库存 WKInterfaceLabels。我觉得这也是一个错误,但我不知道该怎么做。
编辑:在 willActivate()
中调用 setupLoadingTable()我想通了!似乎在 WKInterfaceTable 和 WKInterfaceLabel 的视图中都有一个名为“38mm Installed”的属性。问题是,我是 运行 42mm 的模拟器 但我只检查了 38mm 。
检查完这两个属性后,一切都按计划进行!
这是我所指内容的屏幕截图:
我遇到了同样的问题,对我来说,这是因为我为我的 WKInterfaceLabel 命名了 IBOutlet title
,事实证明这也是 NSObject 中方法的名称。