【问题标题】:WKInterfaceTable shows storyboard data when adding rowsWKInterfaceTable 在添加行时显示情节提要数据
【发布时间】:2015-04-27 10:55:07
【问题描述】:

我有一个带有单行控制器的WKInterfaceTable。我正在使用以下代码将数据绑定到表:

[self.table setNumberOfRows:[data count] withRowType:@"RowController"];
for (int i = 0; i < [data count]; i++)
{
    RowController *row = [self.table rowControllerAtIndex:i];
    [row bind:[data objectAtIndex:i]]; // sets labels in the row etc.
}

如果我使用insertRowsAtIndexes:withRowTypes: 逐一添加行,我也会遇到同样的问题。无论哪种情况,您都必须先向表中添加一行,然后才能更新该行以显示正确的数据。

第一个问题是,正因为如此,用户可以看到正在添加的行和绑定到它的数据之间的虚拟故事板数据。

我试过了

  • 隐藏包含该表的组,直到循环完成,但第一次加载时的第一个表项最终好像完全绑定到nil(即使它不是)(someone else has seen this
  • 隐藏包含每行内容的组,直到组完成,但滚动处理效果不佳,行弹出效果不佳
  • 与另一组一起将表格推到视野之外,直到循环结束,但您仍然可以向下滚动到它

真的有没有方法可以在向用户显示表格行之前渲染它吗?

【问题讨论】:

  • 您的 bind 方法是否在异步执行任何耗时的操作?
  • 不,所有耗时的异步操作都发生在 bind... 之前...有问题吗?
  • 不,这是件好事。你用哪种方法实现了这个? init 还是 awakeWithContext?
  • 它在awakeWithContext。我的控制器被唤醒,显示一个初始屏幕,并发出一系列异步 HTTP 请求,最后一个将数据设置到表中并显示它。
  • 您是否尝试在此方法中绑定您的数据'- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier inTable:(WKInterfaceTable *)table rowIndex:(NSInteger)rowIndex'?我正在做这两件事,但没有遇到这个问题。也许它会有所帮助。

标签: ios watchkit wkinterfacetable


【解决方案1】:

我遇到了类似的问题,通过将作业分派到主线程来解决。

dispatch_async(dispatch_get_main_queue(), ^{
    [self.table setNumberOfRows:[data count] withRowType:@"RowController"];
    for (int i = 0; i < [data count]; i++)
    {
        RowController *row = [self.table rowControllerAtIndex:i];
        [row bind:[data objectAtIndex:i]]; // sets labels in the row etc.
    }
});

【讨论】:

  • 嗨,马修,感谢您的回答;不幸的是,我们已经发货了,我不再有手表可以使用,所以我无法尝试!但下次我们开发应用程序时,我肯定会试一试(或继续),希望这个答案可以帮助遇到同样问题的其他人。
  • 对于任何想知道的人:我对此进行了测试,并且效果很好。谢谢马特!
猜你喜欢
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多