WKInterfaceTable在添加行时显示故事板数据

时间:2015-04-27 10:55:08

标签: ios watchkit wkinterfacetable

我有一个带有单行控制器的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(即使它不是)({{3 }})
  • 隐藏包含每行内容的组,直到该组完成为止,但滚动处理效果不佳且行弹出不佳
  • 将表推出另一个组的视图直到循环结束,但您仍然可以向下滚动到它

是否真的没有方式在显示表行之前将其显示给用户?

1 个答案:

答案 0 :(得分:3)

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

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.
    }
});