在UITableView中延迟UIImageView渲染

Bra*_*rad 27 iphone uitableview nsurlconnection uiimageview

好吧,我有一个UITableView自定义UITableViewCell的,每个包含一个UIImageView图像是通过一个异步下载的NSURLConnection.所有非常标准的东西......

问题是,当表格滚动时,新图像会在后台正确下载,但在表格停止移动之前不会出现RENDERED.

即使它正在移动,我如何让表格呈现它的内容?谢谢.

- 更新 -

仔细看后,我发现NSURLConnection委托方法在表停止滚动之前不会触发.不知道为什么.任何帮助都会很棒.

Dan*_*son 65

在您停止滚动之前连接委托消息未触发的原因是因为在滚动期间,运行循环处于中UITrackingRunLoopMode.默认情况下,仅NSURLConnection调度自身NSDefaultRunLoopMode,因此滚动时不会收到任何消息.

以下是如何在"常用"模式下安排连接,其中包括UITrackingRunLoopMode:

NSURLRequest *request = ...
NSURLConnection *connection = [[NSURLConnection alloc]
                               initWithRequest:request
                               delegate:self
                               startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop]
            forMode:NSRunLoopCommonModes];
[connection start];
Run Code Online (Sandbox Code Playgroud)

请注意,您必须startImmediately:NO在初始化程序中指定,这似乎与Apple的文档背道而驰,该文档建议您即使在启动后也可以更改运行循环模式.