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 和一些 WKInterfaceLabels。根据某些条件,我在 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 中滚动一样