自定义UITableViewCell不会立即更新其子视图,为什么?

时间:2010-06-17 21:17:26

标签: iphone objective-c uiview

我有一个自定义的UITableViewCell,其中包括标签和imageView。如果表视图是可见视图并且它上面有一个单元格,如果我以编程方式更新标签的文本和imageView的图像并在我执行时记录,则在标签日志中看到通知后大约需要4秒钟和图像更新。以下是发生的事情的顺序和方式:

- 加载包含表格和一个自定义单元格的视图

- 使用和NSOperation(和队列)

将文件写入磁盘

- 当NSOperation完成文件写入后,它会激活一个NSNotification(defaultCenter),它告诉单元格的视图更新标签和图像并设置[self setNeedsDisplay]

- 我在日志中看到单元格已收到通知并已完成设置新值

- 约4秒后,单元格的视图实际更新。

是什么给出了?

2 个答案:

答案 0 :(得分:4)

我特定问题的解决方案取决于我更新数据的方式,我使用NSOperation(和队列)发送通知,通知响应者然后更新视图。问题是NSOperation在技术上存在于另一个线程中,所以我应该做的是:

- 使用和NSOperation(和队列)

将文件写入磁盘

- 当NSOperation完成文件写入后,它会触发NSNotification(defaultCenter),响应者应该执行SelectorOnMainThread一个实际更新视图的方法

这个和我的手机是否立即更新。

答案 1 :(得分:0)

您应该调用reloadRowsAtIndexPaths:withAnimation:来更新表格视图中的特定单元格。