UITableView 中的图像不断重新加载,并且滚动时错误的图像会闪烁

2024-04-06

我创建了一个 UITableView,它根据 URL 请求填充每个单元格。我使用“dispatch_queue”来防止 UItableView 冻结。由于某种原因,当我滚动 UITableView 时,图像会闪烁并消失,并填充错误的单元格一秒钟,直到自行修复。这是我的代码。我正在使用 Restkit 拉取 feed

customCell.customCellTextLabel.text = [NSString stringWithFormat:@"%@",feedO.title];

    NSString *string = [NSString stringWithFormat:@"%@",feedO.body];

    NSURL *urlString;

        NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
        NSArray *matches = [linkDetector matchesInString:string options:0 range:NSMakeRange(0, [string length])];
        for (NSTextCheckingResult *match in matches) {
            if ([match resultType] == NSTextCheckingTypeLink) {
                urlString = [match URL];
                NSLog(@"found Body URL: %@ and title %@", urlString,feedO.title);
            }
        }

        dispatch_queue_t imageQueue = dispatch_queue_create("imageDownloader",nil);
        dispatch_async(imageQueue, ^{

            NSData *data = [[NSData alloc] initWithContentsOfURL:urlString];

            dispatch_async(dispatch_get_main_queue(), ^{

                customCell.customCellImageView.image = [UIImage imageWithData: data];
            });
        });


    return customCell;

您应该考虑使用此库 SDWebImage,可在此处获取https://github.com/rs/SDWebImage https://github.com/rs/SDWebImage对于此类问题。它可以非常轻松地处理远程图像的异步下载和缓存。

最简单的安装是使用 CocoaPods 完成

可可豆荚 (http://cocoapods.org http://cocoapods.org) 是 Objective-C 的依赖管理器,它可以自动化并简化在项目中使用第 3 方库的过程。 有关更多详细信息,请参阅入门部分。

在你的 Podfile 中使用

platform :ios, '6.1'
pod 'SDWebImage', '~>3.6'

安装 SDWebImage 的依赖项后,只需在视图控制器中使用以下几行:

#import <SDWebImage/UIImageView+WebCache.h>

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

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

UITableView 中的图像不断重新加载,并且滚动时错误的图像会闪烁 的相关文章

  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • 如何在 RestKit 中为同一类提供两条发布路线

    由于我无法弄清楚如何为同一个类设置两个不同的 POST 资源路径 因此我尝试手动创建 RKObjectLoader 请求 但它似乎不断发送 GET 请求而不是 POST 即使我已将方法设置为邮政 这是我的代码 User user User
  • iOS 开发: [[self navigationController] viewControllers]; 有哪些原因?会返回零吗?

    以下语句返回零 NSArray viewControllersInNavStack self navigationController viewControllers 这个语句是在导航堆栈中大约四层深度的视图控制器中调用的 所以我不明白它如
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 在 Mac OS X Yosemite 10.10.1 上包含搜索路径

    我只是为了更改包含搜索路径顺序 我相信 I d like to change the include search path Especially I need usr local include first 但它不会因为重复而改变 我怎样
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 使用反射的属性类型或类

    我想知道是否可以确定对象属性的类或原始类型 获取所有属性名称和值非常容易 所以答案 https stackoverflow com questions 2299841 objective c introspection reflection
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • Objective-c中的贝塞尔曲线算法

    比我聪明的人可以看一下这个吗 我正在尝试实现我发现的贝塞尔曲线算法here http webtweakers com swag GRAPHICS 0074 PAS html在 Objective c 中 输出是错误的 我想我正确地转换了代码
  • 具有多种自定义单元格类型的 RxSwift 表视图

    我想知道是否有任何代码示例RxSwift当我可以在一个表视图中使用多个自定义单元格时 例如 我有两个部分 第一部分有 10 个单元格 类型为CellWithImage标识符和第二部分有 10 个带有类型的单元格CellWithVideo标识
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • 什么才是真正性能更高的? Haskell 或 OCaml [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用复选框回发带有标志的枚举

    我有一个枚举属性 我试图通过复选框设置它的值 枚举被标记 当用户选择多个选项时 我希望该属性将所有选定的标记连接起来 我尝试为每个枚举值添加一个复选框 并为每个复选框指定相同的名称 在回发期间 将检索第一个选定的标志 但不会与其他标志连接
  • 防止 DataGrid 滚动对齐行

    我有一个 DataGrid 其中每一行都包含一个 ItemsControl 因此 网格的行可能会非常高 如果一行比网格的高度高 我无法滚动查看该行的其余部分 因为 DataGrid 会自动滚动到下一行 也就是说 如果我正在查看第 1 行的上
  • 将参数传递给 std::thread 包装器

    我想实现一个小型线程包装器 它提供线程是否仍处于活动状态或者线程是否已完成其工作的信息 为此 我需要将线程类要执行的函数及其参数传递给另一个函数 我有一个简单的实现 应该可以工作 但无法编译它 而且我不知道该怎么做才能使它工作 这是我的代码
  • Symfony2 - 获取 TWIG 模板中的当前 URL 或路由?

    我的路线是 admin path admin defaults controller CatalogWebBundle Admin admin 如何在 PHP 模板中获取路由名称 获取当前 URL request gt getRequest
  • Postgres 中左连接分页

    Summary 我的数据库中有需要在客户端显示的数据 到目前为止 它还没有被分页 但现在数据已经增长到明显减慢连接速度的程度 所以我想分页它 Setup 客户端我正在使用 DataTables 服务器端我使用 F 数据库是postgres
  • 一段时间后未调用 CLLocationManager didUpdateToLocation

    我正在尝试记录用户随时间的位置 如果用户在移动 则它可以正常工作 并且委托方法 didUpdateToLocation 会被可靠地调用 但是 如果用户静止并且应用程序在后台运行 那么在一段时间后 将不再调用委托方法 要重新启动它 需要将该应
  • 带参数的 Typescript 工厂模式

    我目前在我的项目中使用工厂模式 下面是最小的可重现代码 class A constructor public name string class B constructor public age number public address
  • Internet Explorer 中的 JavaScript 正则表达式问题

    我正在尝试使用正则表达式拆分 Javascript 中的字符串 我的代码如下 var status This is a test http yfrog com 5y6eruj var regexp http yfrog com w 0 1
  • 如何制作字典扩展方法?

    我正在尝试写一个Dictionary独立于键 值数据类型工作的扩展 我尝试通过使用object数据类型 假设它适用于任何类型 My code public static class DictionaryExtensionsClass pub
  • 具有 Spring Boot 应用程序的 docker Secret 无法在 docker swarm 模式/run/secrets 下工作

    我正在尝试设置 MySQL 容器和 Spring Boot 应用程序的数据库密码的环境变量 该密码通常在 docker 秘密中声明 echo db secured password docker secret create secret 这
  • 如何统计有向图中所有可达节点?

    有一个有向图 可能包含环 每个节点上都有一个值 如何得到每个节点的可达值之和 例如 在下图中 节点 1 的可达和为 2 3 4 5 6 7 27 节点 2 的可达总和为 4 5 6 7 22 我的解决方案 要得到所有节点的总和 我认为时间复
  • REALM、SQLITE、FCM 数据库之间的区别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 REALM SQLITE FCM数据库之间的区别 REALM SQLITE FCM 数据库之间的主要区别是什么 为什么我更喜欢这个数据
  • 何时何地使用 Lambda?

    我试图理解为什么我们真的需要 ruby 中的 lambda 或 proc 或任何其他语言 method def add a b c a b end using proc def add proc a b f Proc new x y x y
  • ds.Tables[0].Select() 代表什么

    博士在这里得到什么 DataRow dr objds Tables 0 Select ProcessName tnProcName Text 我得到的是 dr System Data DataRow 4 而不是单独的行 在 dr 中 现在由
  • IE9:我的网站上的 CPU 利用率始终较低

    我使用 JQuery 和许多拖放元素开发了一个网站 效果非常好 然而 在 IE9 上 当动态加载 使用 load 并显示大量拖放元素时 浏览器总是消耗少量 CPU 10 用于刷新 即使没有任何内容用户长时间不触摸鼠标或滚动页面即可完成此操作
  • 将 Google 域链接到 Amazon ec2 服务器

    我正在使用 Amazon EC2 实例来为 node js 应用程序提供服务 我最近通过以下方式购买了域名谷歌域名 https domains google com我想使用该域名来访问我的 node js 应用程序 Google Domai
  • 在AWS SNS(简单通知服务)电子邮件通知中发送html内容

    我在用AWS SNS 简单通知服务 发送电子邮件通知 在电子邮件的内容中 我必须以表格形式表示数据 目前我正在使用简单的文本字符串打印表格 但有格式问题当通过手机和平板电脑等较小屏幕设备访问电子邮件时 表格数据根本无法解释 我希望使用 ht
  • “结构细化中的参数类型可能不会引用该细化之外定义的抽象类型”

    当我编译时 object Test extends App implicit def pimp V xs Seq V new def dummy x V x I get fsc d aoeu go scala go scala 3 err
  • UITableView 中的图像不断重新加载,并且滚动时错误的图像会闪烁

    我创建了一个 UITableView 它根据 URL 请求填充每个单元格 我使用 dispatch queue 来防止 UItableView 冻结 由于某种原因 当我滚动 UITableView 时 图像会闪烁并消失 并填充错误的单元格一