先下载数据,然后在TableViewcontroller上显示

2024-06-03

我有 tableviewcontroller 和从服务器获取的数据。我使用以下类来下载异步数据。但我的问题是当用户看到 tableViewcontroller 时正在加载数据。我希望在用户看到之前加载数据。

    #import <SDWebImage/UIImageView+WebCache.h>

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.textLabel.text = [[tableData objectAtIndex:indexPath.row] valueForKey:@"name"];
    cell.textLabel.font = [UIFont fontWithName:@"BebasNeue" size:24];
    cell.textLabel.textColor = [UIColor whiteColor];


    NSString *imageURLString=[[tableData objectAtIndex:indexPath.row] valueForKey:@"logo"];
    NSString* imageURL = [[tableData objectAtIndex:indexPath.row] valueForKey:@"picture"];
    [cell.imageView setImageWithURL:[NSURL URLWithString:imageURL]];

}

Solution

With SDWeb图像 https://github.com/rs/SDWebImage您可以先下载图像。

Where?

这取决于您的实施。也许在以前的控制器中,或者在您的appDelegate。如果tableview出现在你的首字母中viewcontroller,机会绝对取决于网络速度。

示例代码

看看这段代码(从库的Readme中提取,检查来源!):

Manager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:imageURL
                 options:0
                 progress:^(NSInteger receivedSize, NSInteger expectedSize)
                 {
                     // YOU DON'T NEED THIS
                 }
                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
                 {
                     if (image)
                     {
                         // MAYBE YOU WANT TO DO SOMETHING HERE
                     }
                 }];

然后,在你的tableView:cellForRowAtIndexPath:方法,你可以像这样设置图像:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // ...
    NSURL* url = GET_IMAGE_URL;
    [cell.imageView setImageWithURL:url];
    // ...
}

怎么运行的?

该库首先负责在其缓存中查找,在那里它将找到之前下载的图像,因为它使用图像 url 作为缓存的键,以便图像立即出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

先下载数据,然后在TableViewcontroller上显示 的相关文章

随机推荐

  • 对齐与未对齐 x86 SIMD 指令之间的选择

    SIMD指令一般有两种类型 A 使用对齐的内存地址 如果地址未在操作数大小边界上对齐 则会引发一般保护 GP 异常 movaps xmm0 xmmword ptr rax vmovaps ymm0 ymmword ptr rax vmova
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已
  • Jenkins 通过 ssh 发布显示错误“jenkins.plugins.publish_over.BapPublisherException:无法添加 SSH 密钥。”

    为了使用 ssh 连接 jenkins 与远程服务器 我在 jenkins 中安装了通过 SSH 发布的插件 但配置后 它显示错误为 jenkins plugins publish over BapPublisherException 无法
  • 在并行包中的 R 的 par*apply 函数内部使用 Rcpp 函数

    我试图了解背后发生的事情Rcpp sourceCpp 调用并行环境 最近 问题中部分解决了这个问题 在 Windows 上使用 parLapply 中的 Rcpp 函数 https stackoverflow com questions 2
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • 小部件配置在 macOS 上不起作用

    我为我的 iOS 应用程序制作了一个小部件 效果很好 现在我正在将其移植到我的 macOS 应用程序中 但不知何故 小部件配置不起作用 这些项目已显示 但我无法以某种方式选择它们 查看屏幕截图 但请看一下我制作的视频 https youtu
  • React Native 0.61 中引入的快速刷新不起作用

    也发表在https github com facebook react native issues 27583 https github com facebook react native issues 27583 更新 一天过去了 我再次
  • 在 Navicat Premium 中连接到 LocalDB 服务器

    Recently I installed LocalDb Serer on my laptop I am trying to establish a connection between Navicat and LocalDB server
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i
  • Ada 中的 In/Out 与 Out

    我有一个简短的艾达问题 如果我有一个程序may写出一个变量 或者我might不用管它 它应该是一个Out参数或In Out范围 我想这可以归结为一个问题 如果调用者调用参数如下的过程 它会看到什么Out但该过程不触及参数 它看到相同的值吗
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo
  • 在 Perl 中查找数组的大小

    我似乎遇到过几种不同的方法来查找数组的大小 这三种方法有什么区别呢 my arr 2 print scalar arr First way to print array size print arr Second way to print
  • 将 R 中的列中的单引号替换为双引号

    我在 R 中的数据框有一个 A 列 其中有带单引号的字符串数据 Column A Hello World Hi World Good morning world 我想做的是将单引号替换为双引号并实现如下所示的输出 Column A Hell
  • 如何使用 cordova 打开设备中的设置页面

    我正在使用 apache cordova 构建一个应用程序 并且我已经可以使用以下命令检查蓝牙是否可用蓝牙串行插件 https github com don BluetoothSerial 如果不是 那么我会重定向到一个页面 其中有一个按钮
  • 加载 requireJS 模块内联 HTML 正文?

    我正在将 RequireJS 集成到 CMS 中 因此我将其放置在页面模板的底部 Placeholder1 Placeholder2 然后在每个页面上 我想创建一个利用 RequireJS 的函数 所以我尝试将其放在页面底部 h1 Home
  • 从其他配置文件访问配置变量

    我在配置文件中使用另一个配置文件中设置的配置变量时遇到问题 例如 file config local js module exports mongo db username TheUsername password ThePassword
  • 敏感性特异性图 python

    我正在尝试重现类似于此的灵敏度特异性图 其中 X 轴是阈值 但我还没有找到如何做到这一点 一些 skalern 指标 如 ROC 曲线 会返回真阳性和假阳性 但我还没有找到任何选项来制作此图 我试图将概率与实际标签进行比较以保持计数 我得到
  • Azure 机器学习 - CORS

    我已经搜索了几个小时 但找不到任何可以回答这个问题的东西 我创建并发布了新的 Azure 机器学习服务 并创建了一个终结点 我可以使用 Postman REST 客户端调用该服务 但通过 JavaScript 网页访问它会返回一个控制台日志
  • 使用 typeid 获取派生类的名称

    我正在创建一个资源管理器 它接受从该类派生的类Resource 我的问题是 typeid name 返回错误的类名称 我想将纹理等资源添加到地图中 如下所示 typedef std unordered map
  • 先下载数据,然后在TableViewcontroller上显示

    我有 tableviewcontroller 和从服务器获取的数据 我使用以下类来下载异步数据 但我的问题是当用户看到 tableViewcontroller 时正在加载数据 我希望在用户看到之前加载数据 import