更新界面时作为willActivate的一部分的奇怪行为

时间:2015-02-19 14:34:42

标签: ios objective-c watchkit

我有一个显示6行WKInterfaceController的{​​{1}}子类。这个类也是初始接口控制器。当通过WKInterfaceTable收到通知操作时,我模拟地呈现第二个接口控制器。用户不对模态显示的接口控制器执行任何操作,但加载它会修改初始界面中行控制器使用的6个对象之一的状态。当模态控制器被解除时,我的意图是反映表中的更新状态。

我没有检索更新对象的问题,因为他们的管理是由另一个我可以查询更新数据的类处理的。由于初始接口控制器已经执行handleActionWithIdentifier:forLocalNotification,因此我只能依靠awakeWithContext:来更新接口。这似乎符合Apple的指导原则,因为我没有将界面初始化为该方法的一部分,只是更新它。

TL; DR;

当我通过行控制器更新行时,只有已更新的值才会在单元格上正确显示。其他单元格在故事板上的设计时使用分配给我单元格中标签的默认值。

例如

  • 第1行:数 - 3最佳 - 3
  • 第2行:计数 - 42最佳 - 99
  • 第3行:计数 - 42最佳 - 99

非常奇怪的是,这只会在后续调用willActivate时发生。刚刚打开监视应用程序并在willActivate中第一次更新界面时,它的行为与预期一致。当由于模态解雇而被激活时,这种行为会逐渐消失。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

我可以想到两个可能的问题。

首先,WatchKit界面控制器的行为就像在页面集中创建快照一样。显示一次后,这些值在停用后不会更新,直到它们完全在屏幕上并且您的willActivate方法已被调用。切换图像与在界面不可见时切换表格行标签相同。它必须在willActivate中完成,否则它似乎会被删除。

我见过的与此相关的另一个问题是当你setNumberOfRows时,你需要更新所有行中的值。否则,您将最终得到您设置的行的自定义行值,以及故事板中所有其他行的默认值。如果您只更新willActivate中特定行的值而未调用表格中的setNumberOfRows,那么我说您应该向Apple提交错误{{3 }}