我正在为 Apple Watch 开发一个简单的视频游戏。在 awakeWithContext() 中,我调用我自己的方法 startNewGame(),并注册它以便在收到来自我的模态视图控制器的通知时再次调用它。这一切都很好。然后在确定游戏结束后,我调用 self.presentControllerWithName()。当该控制器被玩家解散时,我调用 self.dismissController()。然后我发出一个再次调用 startNewGame() 的通知。这就是事情变得奇怪的地方。
self.score = 0
let scoreString = formatScore(0) //"0000"
self.scoreboard.setText(scoreString)
let hiScore = NSUserDefaults.standardUserDefaults().integerForKey("hiScore")
let hiScoreString = formatScore(hiScore)
self.hiScoreboard.setText(hiScoreString)
startNewGame() 的上述摘录显示我重置了分数并更新了两个“记分牌”,两个 WKInterfaceLabels 都以一种拟物化的老式 LCD 方式呈现分数。因此,我调用了 formatScore(),它返回一个带有前导零的字符串。无论如何,然后我将文本设置在它们两者上,然后……什么也没有发生。两个板显示的分数与显示游戏结束视图控制器之前的分数相同。只有当它们下一次更新以响应玩家的操作时,它们才会更新以反映正确的值。因为我只有在模式视图控制器关闭后不久运行代码时才会遇到这个问题,所以我怀疑存在一些联系。无论如何,我很难过,一些帮助将不胜感激。