【问题标题】:Delay Before Opening Detail View From Table View从表视图打开详细视图之前的延迟
【发布时间】:2014-02-15 23:18:05
【问题描述】:

我有一个表格视图,其中填充了来自 RSS 提要的项目。选择一行时,标题、链接、描述和图像将传递到详细信息视图。这可行,但是在选择行和打开详细视图之间存在明显的延迟。我正在尝试找到一种方法来优化它,这样延迟就不那么明显了。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    GRSItemDetail *detail = [[GRSItemDetail alloc]initWithNibName:@"GRSItemDetail" bundle:nil];

    RSSItem *entry = [[channel items]objectAtIndex:[indexPath row]];

    NSURL *imageLink = [NSURL URLWithString:[entry bigImageURL]];
    NSData *data = [NSData dataWithContentsOfURL:imageLink];
    UIImage *image = [[UIImage alloc]initWithData:data];

    detail.titleString = [entry title];
    detail.descriptionString = [entry infoString];
    detail.urlString = [entry link];
    detail.itemImage = image;

    [self.navigationController pushViewController:detail animated:YES];

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

【问题讨论】:

  • yes ,因为您在 didselect, 方法中从 url 加载数据。最好将 url 传递给 GRSItemDetail 并在 GRSItemDetail 的 viewdidload 中加载 url 内容。

标签: ios objective-c uitableview didselectrowatindexpath


【解决方案1】:

延迟是因为您使用了NSData *data = [NSData dataWithContentsOfURL:imageLink];。这是从网络同步下载数据并在发生这种情况时阻塞主线程。

您应该让详细视图控制器在显示后处理异步下载。考虑使用像 SDWebImage 这样的库来简化此操作。要启用此功能,请更改 detail.itemImage 以设置图像 URL 而不是图像本身,然后在配置详细视图时加载图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2020-11-20
    相关资源
    最近更新 更多