UICollectionView - 图像是随机设置的

2024-01-01

我在我的应用程序中使用collectionView。我正在 didSelect 委托中为单元格背景视图设置图像。但是当我选择一个单元格索引路径时,图像将设置为 3 个单元格索引路径。当我滚动 collectionView 时,图像会随机更改?请帮我。提前致谢。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [collection registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:uio];
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:       (NSInteger)section
{
     return 50;
}

 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

    UICollectionViewCell *cell = [collection dequeueReusableCellWithReuseIdentifier:uio
 forIndexPath:indexPath];
    cell.backgroundColor = [UIColor whiteColor];
   return cell;
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
 {
    NSLog(@"index %@",indexPath);
    UICollectionViewCell *cell = [collection cellForItemAtIndexPath:indexPath];

    cell.backgroundView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"download.jpg"]];

 }

那是因为你重复使用了你的细胞。一种选择是使用一个字典变量来表示您的单元格已被选择,如果尚未选择,则重置图像。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"index %@",indexPath);
    UICollectionViewCell *cell = [collection cellForItemAtIndexPath:indexPath];

    cell.backgroundView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"download.jpg"]];

    [selectedDictionary setObject:[NSNumber numberWithBool:YES] forKey:[NSNumber numberWithInteger:indexPath.row]];
}

然后在您的 cellForItemAtIndexPath 方法中您将检查该值

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

    UICollectionViewCell *cell = [collection dequeueReusableCellWithReuseIdentifier:uio
 forIndexPath:indexPath];
    BOOL selected = [[selectedDictionary objectForKey:[NSNumber numberWithInteger:indexPath.row]] boolValue];

    if(selected){
        cell.backgroundView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"download.jpg"]];
    }else{
        cell.backgroundView = nil;
    }

    cell.backgroundColor = [UIColor whiteColor];
   return cell;
}

当然,如果您使用某种对象作为模型,那么在这里有一个选定的变量是合适的,您将不再需要 nsdictionary 。

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

UICollectionView - 图像是随机设置的 的相关文章

随机推荐

  • Jersey 服务器发送事件 - 写入断开的连接不会引发异常

    我们使用 Jersey 服务器发送事件 SSE 来允许应用程序的远程组件侦听 Jersey Tomcat 服务器引发的事件 这很好用 然而 至关重要的是我们的服务器拥有当前连接的侦听器 我们的远程组件 的准确列表 为此 我们的服务器每五秒向
  • 获取我和其中标记的朋友的照片列表的最佳方式是什么?

    我正在做这个 fql SELECT object id pid src big src big height src big width src src height src width FROM photo WHERE pid IN SE
  • 在 Web API 中缓存数据

    我需要缓存大部分静态的对象集合 每天可能会更改 1 次 这些对象在我的 ASP NET Web API OData 服务中可用 该结果集跨调用使用 意味着不是特定于客户端调用 因此需要在应用程序级别缓存 我对 Web API 中的缓存 进行
  • 在 VB asp.net 2.0 中对数据表的行进行分组

    顾名思义 我正在尝试对数据表中的行进行分组 更详细地说 除了一个字段 列 之外 该表具有相同的行 基本上我想做的是将相同行的所有不同字段放入单个字段中 同时删除其他行 这是我当前使用的语法 Dim i As Integer Dim j As
  • 附件可以位于 MIME 的嵌套多部分中吗?

    我知道多部分电子邮件的每个部分本身都可以是多部分 附件是否仅作为顶级部分添加 还是也可以在嵌套的多部分中 例如我的意思 在这里attachment1 doc是嵌套的 而attachment2 doc将是顶级部分 multipart mixe
  • Jquery - Jquery Wysiwyg 以字符串形式返回 html

    我正在使用 Jquery Wysiwyg 编辑器 并且尝试捕获构成内容区域的 html 以存储在数据库中 有没有办法获取元素的 html 并将其保存为字符串 我的代码看起来像 ul li This is a test li ul 我想要一个
  • Jasper Reports 将绝对路径更改为相对路径?

    我是 jasper 的新手 我想在 jrxml 中编译报告并从绝对路径到相对路径导出为 pdf 目前这些代码仅在绝对路径下工作 导出为 pdf 下载网络浏览器的文件夹 Reports ConsumationReport jrxml 内的 j
  • Hadoop 2.2.0 jobtracker 未启动

    看来我没有jobtracker使用 Hadoop 2 2 0 JPS没有显示 50030端口没有人监听 也没有相关日志jobtracker在 的里面logs文件夹 这是因为 YARN 的原因吗 如何配置和启动作业跟踪器 如果你使用YARN框
  • React JS 多个提交按钮react-hook-form

    我使用react hook form进行表单验证和提交 使用单个提交类型按钮一切正常 现在我需要三个按钮 保存草稿 预览页面中的数据值 和 提交审批 我可以选择退出模式选择单选按钮 但想要具有三个按钮提交功能 这需要表单数据 为输入字段添加
  • Blackberry 10:Android 运行时和 JNI

    BlackBerry 10 Android Runtime 是否支持 JNI 我想在我的 android 应用程序中执行本机 c 代码 我想将其部署在黑莓 10 操作系统上 在我的 android 应用程序中 我使用 JNI 来处理从本机
  • 带引导程序的幻灯片放映

    我尝试用引导程序制作幻灯片 以便您滑动浏览图像 但图像没有显示 仅显示下一个和上一个按钮 我正在使用 asp net mvc5 这是jquery document ready function myModal myModal row img
  • 对 PixelFormat 感到困惑

    我很困惑像素格式 http developer android com reference android graphics PixelFormat html在安卓上 我的设备是摩托罗拉 Defy 我有两个问题 在安卓2 3上getWind
  • 使用 parquet 文件元数据创建 Hive 表

    我编写了一个 DataFrame 作为镶木地板文件 而且 我想使用镶木地板中的元数据使用 Hive 读取文件 写入 parquet write 的输出 common metadata part r 00000 0def6ca1 0f54 4
  • 连接由 V-USB 库供电的 libUSB 设备用于 AVR

    我写了一个简单的程序 基于下列的 http codeandlife com 2012 01 22 avr attiny usb tutorial part 1 教程 通过 USB 端口将数据从 AVR 芯片 Attiny 2313 发送到计
  • Node.js 多进程日志记录

    我现在正在做一个基于集群的node js项目 我陷入了日志记录的困境 经过一番研究后 我找到了一个解决方案 就这个 我不知道这是否是一个好主意 想法是这样的 只有master进程可以写入日志文件 如果当前进程是worker 那么它会向mas
  • LINQ 标识函数

    只是关于 LINQ 语法的一点小问题 我正在压平一个IEnumerable
  • PHP OCI、Oracle 和默认数字格式

    当我使用 PHP OCI 从 Oracle 数据库执行提取时 小于 1 的数字显示为 XXXXXX e g 249999 有没有办法将其设置为0 XXXXXX或任何其他格式 无需修改每个要使用的查询to char 明确地 也许通过一些会话参
  • asp .net 2.0 上的最大查询字符串长度

    我正在研究 ASP NET 版本 2 0 和 IIS 6 我通过调用其 URL 并向其传递查询字符串来从主页调用弹出的 aspx 页面 对于特定情况 我的查询字符串的长度超过 2000 个字符 因此 弹出屏幕第一次打开时效果很好 但每当该弹
  • 当有超过 n 个查询时,如何记录“show processlist”?

    我们的 mysql 进程有时会积压并且进程开始排队 我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因 我想跑show full processlist 通过 cron 作业并将输出保存到文本文件 如果有多个 50返回行 你能为
  • UICollectionView - 图像是随机设置的

    我在我的应用程序中使用collectionView 我正在 didSelect 委托中为单元格背景视图设置图像 但是当我选择一个单元格索引路径时 图像将设置为 3 个单元格索引路径 当我滚动 collectionView 时 图像会随机更改