UICollectionView 委托方法 cellForItemAtIndexPath:indexPath 未从 sizeForItemAtIndexPath 调用

2024-03-29

当我打电话时

[collectionView cellForItemAtIndexPath:indexPath:]

从内部

[collectionView:layout:sizeForItemAtIndexPath:]

那么委托方法不会被触发。知道为什么不吗?

你可以看到.

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

    CustomCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCell" forIndexPath:indexPath];

    [cell configureWithData:self.data[indexPath.row]];

    return cell;
}


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    CustomCell * cell = (CustomCell *)[collectionView cellForItemAtIndexPath:indexPath];

    return [cell preferredSize];
}

我想做的是询问单元格的首选大小。

我可以

CustomCell * cell = (CustomCell *)[self collectionView:collectionView cellForItemAtIndexPath:indexPath];

但随后会触发一个永无休止的循环

为什么它的委托方法没有按应有的方式被调用?


我最终得到了类方法而不是实例方法:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    return [CustomCell preferredSizeWithData:self.data[indexPath.row]; 

}

我为单元格创建了一个类方法...对于这个方法,我提供了指定的实际实例的数据indexPath将保存并计算首选尺寸

我觉得

CustomCell * cell = (CustomCell *)[collectionView cellForItemAtIndexPath:indexPath];

内部触发

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 

我们看到的是苹果公司的一些机制来防止循环......因为直接调用

CustomCell * cell = (CustomCell *)[self collectionView:collectionView cellForItemAtIndexPath:indexPath];

导致循环。

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

UICollectionView 委托方法 cellForItemAtIndexPath:indexPath 未从 sizeForItemAtIndexPath 调用 的相关文章

  • 如何在没有 Xcode 的情况下提交 iOS 应用程序?

    我是一名合同开发商 我已经为客户编写了一个应用程序 是的 使用 Xcode 现在我们准备发货了 我想向他发送一份应用程序副本 他可以签署该副本并将其提交到 iTunes 应用程序商店 但是他没有或没有使用 Xcode 虽然这是一个备份计划
  • 将对象映射到 TableView 部分的 Swift 二维数组

    我想不出更好的方法来做到这一点 我将学生对象的所有属性映射到二维数组中 所以我的电视有几个部分 我也不能使用静态表视图 如果是这样 这个问题就不会存在 所以我在 TVC 中的代码 let currentUser PFUser current
  • 如何获取 HKWorkoutActivityType 的字符串描述?

    我正在开发一项功能 可以从健康应用程序中读取 HKWorkout 样本 我想向用户显示一个描述字符串 告诉他们锻炼是什么 我能看到的唯一可能向用户指示样本代表的活动类型的属性是workoutActivityType财产 我应该如何将 HKW
  • iOS 中通过 USB 进行反向端口转发

    我在桌面上有一个 Web 套接字服务器 在 iPhone 设备上有一个客户端 我想使用 USB 而不是任何网络与他们通信 我已经使用 adb reverse 在 android 上实现了它 但无法找到适用于 iOS 的任何解决方案 我尝试使
  • 为什么分割视图控制器必须始终是您创建的任何界面的根?

    在苹果的开发者指南中 他们指出 分割视图控制器必须始终是您创建的任何界面的根 see here http developer apple com library ios featuredarticles ViewControllerPGfo
  • UITableViewCellDeleteConfirmationControl 问题

    我在项目中使用以下代码 if NSStringFromClass subview class isEqualToString UITableViewCellDeleteConfirmationControl 这在 iOS 5 和 6 上运行
  • 锁定时 AVAudioPlayer 在 iPhone 5 中不播放音频

    使用 AVAudioPlayer 我尝试在 iphone 播放器播放时播放声音 当设备锁定时也是如此 问题是 在 iPhone 4s ios 7 中 效果很好 但在带有 6 和 7 ios 的 iPhone 5 上没有任何反应 In the
  • Xcode 8.2.1 无法添加文件夹引用

    我的 Xcode 8 2 1 不允许我添加文件夹引用 我尝试过的 我右键单击名为 Unity 的文件夹 然后单击 将文件添加到项目 在选项下选中 创建文件夹引用 我的文件夹被添加为红色文件 而不是通常的蓝色文件夹 我尝试将文件的 类型 更改
  • iOS - 检测应用程序是否正在从 Xcode 运行 [重复]

    这个问题在这里已经有答案了 我试图根据代码是否通过 USB Xcode 调试 运行或在从应用程序商店下载的生产模式 发布 运行来启用 禁用部分代码 我知道检查它是否正在运行DEBUG or RELEASE像这样的模式 ifdef DEBUG
  • iOS 应用程序崩溃 com.apple.root.background-qos

    在应用程序中发现应用程序崩溃 我怀疑这可能是由于 firebase 观察者的代码而发生的 由于在用户案例中 用户可以从一个事件转到用户配置文件 参与此事件 然后从用户配置文件可以返回到此事件 我需要一个 ref 句柄来删除特定的观察者 因此
  • 如何在 Swift 中更改 UIButton 图像

    我正在尝试使用 Swift 更改 UIButton 的图像 我应该怎么办 这是 OBJ C 代码 但我不知道 Swift 的情况 playButton setImage UIImage imageNamed play png forStat
  • 使用本地化故事板进行即时本地化

    我正在开发一个应用程序 它有一个切换按钮可以在英语和阿拉伯语之间切换 并且应该是动态的 我正在使用该方法https github com maximbilan ios language manager https github com ma
  • ObjC 中的 self 是什么?我应该什么时候使用它?

    什么是self在 Objective C 中是什么意思 我应该何时何地使用它 是否类似于this在Java中 self指的是您正在使用的当前类的实例 是的 它类似于this在爪哇 如果您想对该类的当前实例执行操作 则可以使用它 例如 如果您
  • 使用 NSCache 实现缓存过期

    我正在使用 NSCache 在我的应用程序中实现缓存 我想为其添加过期时间 以便在一段时间后它将获取新数据 有哪些选择以及最好的方法是什么 我应该查看访问缓存时的时间戳并使之无效吗 缓存是否应该通过使用固定间隔计时器自动使自身失效 缓存是否
  • 当设备方向改变时以编程方式更新约束的正确方法?

    我在用着storyboard and autolayout 并将 IB 中的约束设置为IBOutlet在相应的视图控制器中 我正在阅读几篇关于如何将纵向和横向的约束更新为不同的帖子 但我仍然不确定应该如何执行此操作 我应该设置新的限制吗 v
  • AFNetworking 2.0 可达性不起作用

    我在使 AFNetworking Reachability 模块正常工作时遇到一些问题 我已经使用 ReachabilityStatusChangeBlock 设置了 AFHTTPRequestOperationManager 但它从未被调
  • 如何在 iOS 中通过 wifi 传输大文件

    我下载了WiTap http developer apple com library ios samplecode WiTap Introduction Intro html代码来自苹果网站 它用于通过本地 WiFi 网络传输数据 我正在从
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • 检测 UITableViewCell 何时离开屏幕

    我正在实施一个丰富的UITableView与定制创建UITableViewCell 我以一种方式在屏幕上显示这些 但是一旦它们离开屏幕 我想记下这一点 因为它们第二次出现时我希望它们以不同的方式显示 认为离开屏幕时自动 标记为已读 我一直在
  • 呈现 UIActivityViewController 时发出警告

    当我提出一个UIActivityController使用我得到的下面的代码 它被呈现 但控制台显示 Warning Attempt to present

随机推荐