在实际设备上访问Glance中的IBOutlet时,WatchKit“在展开可选值时意外发现nil”

时间:2015-06-12 07:58:44

标签: ios swift watchkit

我有一瞥和一些WKInterfaceLabel。我根据某些条件在setHidden()中使用override func willActivate()

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)
    }
  }
}

这适用于模拟器,但在实际观看时,我会在fatal error: unexpectedly found nil while unwrapping an Optional value获得lName.setHidden()

之前有人见过这个吗?

2 个答案:

答案 0 :(得分:0)

由于您的“lName”被声明为显式解包可选,因此以下方式访问变量更安全 -

   if let validLName = lName {
     if(conditions) {
        validLName.setHidden(false)
     } else {
        validLName.setHidden(true)
     }
   }
}

答案 1 :(得分:0)

您似乎不允许在WatchKit中使用Glance,至少对于当前版本的li

我完全重新设计我的UI以使用单个标签并且它有效。显然它看起来并不像我想的那么好。

我理解这个限制,但我真的希望有更多的文档来解决问题。就像我发现在设计用户界面后花费时间后我无法在li中滚动一样。