【问题标题】:ASIHTTPRequest Not WorkingASIHTTPRequest 不工作
【发布时间】:2011-09-13 19:27:46
【问题描述】:

我的 cellForIndexPath 中有以下代码,但图片的顺序不正确:

NSURL *url = [NSURL URLWithString:[self.picturesArray objectAtIndex:indexPath.row]];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
    NSData *responseData = [request responseData];
    cell.imageView.image = [UIImage imageWithData:responseData];;
}];
[request setFailedBlock:^{
    NSError *error = [request error];
}];
[request startAsynchronous];

【问题讨论】:

    标签: iphone objective-c cocoa-touch asihttprequest


    【解决方案1】:

    [那我会改变我的答案,因为你完全改变了问题。 :-)]

    所以...图片在错误的单元格中?

    细胞重复使用可能是问题所在。您正在启动一个异步过程来加载单元格的图像。如果该单元格滚出屏幕,则该单元格对象可能会被重新用于进入视野的另一个单元格。同时,正在加载的第一个图像将继续加载,除非您注意到该单元格已被重新使用和/或取消之前的加载。

    滚动时图像是否以错误的顺序显示?或者,如果您只是启动应用而不滚动表格,是否会发生这种情况?

    【讨论】:

    • 抱歉更新了问题,图片正在加载,但不完全正确。也许我需要将cell.imageView.image = [UIImage imageWithData:responseData];; 移出街区?
    • 当我刚刚启动应用程序并且不滚动时,单元子屏幕的图像是正确的,只有当我滚动时,顺序才会混乱。它会在一秒钟左右后快速将图像设置为正确的图像。也许我必须加载一个虚拟图像或其他东西?
    • 不,这无济于事。我认为您确实需要子类化 UITableViewCell 以便您可以知道单元格是否以及何时调用其 prepareForReuse 方法并停止加载和/或不显示它已加载的任何图像。
    • 啊!这证实了问题在于细胞重复使用。您必须能够检测到这一点。
    • 这是一种(无效)方法,您可以在其中执行您认为需要做的任何事情来准备重新使用的单元格。在这种情况下,您要做的是取消任何活动的图像下载,并且可能将图像设置为 nil。检查 UITableViewCell 的文档。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多