【发布时间】: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