3

我可以调用collectionView:cellForItemAtIndexPath:以获取特定单元格,以便随时修改该单元格——例如,更新其标签。我说的是 on 的类实例方法UICollectionView,而不是UICollectionViewDataSource方法。

但是,页眉/页脚似乎没有类似的方法。collectionView:viewForSupplementaryElementOfKind将返回页眉/页脚的唯一实例,而不是提供已分配的实例。因此,我无法获取指向标头的指针以更新(例如)标签。我被迫重新加载该部分并在collectionView:viewForSupplementaryElementOfKind方法体中对其进行修改。

是否有适当的方法来获取指向特定页眉/页脚的指针,而无需使用自定义对象缓存或标签?

4

3 回答 3

5

据我所知,没有(直到 iOS 6 才有对 , 的等效调用UITableViewfooter/headerViewForSection

如果我不得不猜测为什么这是不可能的,我会说这是因为在某些布局中UICollectionView会自动重新布局并调整补充视图,因此“即时”调整视图内容可能会出现问题。但是,假设UICollectionView没有像复制视图那样做任何有趣的事情,您可能应该能够将补充视图保存在一个单独的数组中并以这种方式修改它们——也就是说,不能保证这不会引入一些奇怪或奇怪的行为(对于您对使用标签并进入集合视图层次结构的建议)。

所以简短的回答是否定的——API 中没有支持此功能的方法。如果您有一个引人注目的用例,那么可能值得通过 Apple 的错误报告器提交功能请求。

于 2013-01-08T09:57:40.193 回答
2

另一种可能的解决方案是让标题视图监听NSNotification您广播的内容,然后关心的内容可以根据您拥有的任何标准进行自我更新。

或者给他们一个标签并使用viewWithTag:.

于 2015-02-12T00:20:22.207 回答
2

正确的做法是更新数据源中的数据模型对象,然后调用[myCollectionView reloadData]. 这将触发您的集合视图再次请求数据并根据需要更新其子视图。

于 2014-04-02T19:58:24.887 回答