WatchKit "unexpectedly found nil while unwrapping an Optional value" 在实际设备上访问 Glance 中的 IBOutlet 时
WatchKit "unexpectedly found nil while unwrapping an Optional value" when accessing IBOutlet in Glance on actual device
我有一个 Glance 和一些 WKInterfaceLabel
s。根据某些条件,我在 override func willActivate()
中对它们使用 setHidden()
。
class GlanceController: WKInterfaceController {
@IBOutlet weak var lName: WKInterfaceLabel!
...
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
if(conditions) {
lName.setHidden(false)
} else {
lName.setHidden(true)
}
}
}
这在模拟器中有效,但在实际手表上,我在 lName.setHidden()
得到 fatal error: unexpectedly found nil while unwrapping an Optional value
。
有人以前看过吗?
由于您的 "lName" 被声明为显式解包可选,因此按照以下方式访问变量更安全 -
if let validLName = lName {
if(conditions) {
validLName.setHidden(false)
} else {
validLName.setHidden(true)
}
}
}
看来您不能在 Glance
中使用 .setHidden()
,至少对于 WatchKit
的当前版本是这样。
我完全重新设计了我的 UI 以使用单个标签并且它有效。显然它看起来没有我想要的那么好。
我明白这个限制,但真的希望有更多的文档来省去麻烦。就像我在花时间设计 UI.
后才发现我无法在 Glance
中滚动一样
我有一个 Glance 和一些 WKInterfaceLabel
s。根据某些条件,我在 override func willActivate()
中对它们使用 setHidden()
。
class GlanceController: WKInterfaceController {
@IBOutlet weak var lName: WKInterfaceLabel!
...
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
if(conditions) {
lName.setHidden(false)
} else {
lName.setHidden(true)
}
}
}
这在模拟器中有效,但在实际手表上,我在 lName.setHidden()
得到 fatal error: unexpectedly found nil while unwrapping an Optional value
。
有人以前看过吗?
由于您的 "lName" 被声明为显式解包可选,因此按照以下方式访问变量更安全 -
if let validLName = lName {
if(conditions) {
validLName.setHidden(false)
} else {
validLName.setHidden(true)
}
}
}
看来您不能在 Glance
中使用 .setHidden()
,至少对于 WatchKit
的当前版本是这样。
我完全重新设计了我的 UI 以使用单个标签并且它有效。显然它看起来没有我想要的那么好。
我明白这个限制,但真的希望有更多的文档来省去麻烦。就像我在花时间设计 UI.
后才发现我无法在Glance
中滚动一样