0

我正在为 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(),它返回一个带有前导零的字符串。无论如何,然后我将文本设置在它们两者上,然后……什么也没有发生。两个板显示的分数与显示游戏结束视图控制器之前的分数相同。只有当它们下一次更新以响应玩家的操作时,它们才会更新以反映正确的值。因为我只有在模式视图控制器关闭后不久运行代码时才会遇到这个问题,所以我怀疑存在一些联系。无论如何,我很难过,一些帮助将不胜感激。

4

1 回答 1

0

我在使用sendMessage.

我的代码非常简单:

dispatch_async(dispatch_get_main_queue(),{
  if let error = error {
    NSLog("showing error: \(error)");
    self.lblTitle.setText("Error...");
  } 
});

对我来说,正在记录消息,但界面没有更新。

最后,我正在使用多个页面显示reloadRootControllersWithNames,当我尝试更新未显示页面中的标签时,更新被忽略。

我通过收听willActivatedidDeactivate查看是否更新标签或是否保存文本来修复它,以便在显示页面时应用它。

显然这是设计使然。

于 2015-11-10T18:01:24.463 回答