作为willActivate的一部分更新接口时的奇怪行为



我有一个WKInterfaceController子类,它显示了一个6行的WKInterfaceTable。这个类也是初始接口控制器。当经由handleActionWithIdentifier:forLocalNotification接收到通知动作时,我在模式上呈现第二接口控制器。用户对模式呈现的界面控制器不采取任何操作,但加载它会修改行控制器在初始界面中使用的6个对象之一的状态。当模态控制器被解除时,我的意图是在表中反映更新后的状态。

检索更新的对象没有问题,因为它们的管理由另一个类处理,我可以简单地查询更新的数据。由于初始接口控制器已经执行了awakeWithContext:,所以我只能依靠willActivate来更新接口。这似乎符合苹果的指导方针,因为我并没有将接口初始化为该方法的一部分,只是更新了它

TL;DR;

当我通过行控制器更新行时,只有更新的值才能正确显示在单元格上。其他单元格使用在情节提要设计时分配给我所在单元格中标签的默认值。

例如

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

非常奇怪的是,这种情况只发生在对willActivate的后续调用中。当刚刚打开手表应用程序并在willActivate中首次更新界面时,它的行为与预期一致。当由于模态驳回而被激活时,这种行为会逐渐上升。

谢谢你的任何想法。

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

首先,WatchKit接口控制器的行为就像是在页面集中进行快照一样。显示一次后,值在停用后不会更新,直到它们完全显示在屏幕上并且调用了willActivate方法。当界面不可见时,切换图像与切换表行标签相同。它必须在willActivate中完成,否则它看起来会被丢弃。

我看到的与此相关的另一个问题是,当setNumberOfRows时,需要更新所有行中的值。否则,您将为所设置的行获得自定义的行值,并为所有其他行获得序列图像板中的默认值。如果你只更新willActivate中某一行的值,而没有调用表上的setNumberOfRows,那么我认为你应该向苹果的bug报告系统提交一个bug。

最新更新