我可以调用collectionView:cellForItemAtIndexPath:
来获取特定的单元格,以便随时修改该单元格 - 例如,更新其标签。我说的是UICollectionView
上的类实例方法,而不是UICollectionViewDataSource
方法。
但是,页眉/页脚似乎没有类似的方法。 collectionView:viewForSupplementaryElementOfKind
将返回页眉/页脚的唯一实例,而不是提供已分配的实例。因此,我无法获得指向标题的指针以更新(比方说)标签。我被迫重新加载该部分并在collectionView:viewForSupplementaryElementOfKind
方法的主体中进行修改。
是否有正确的方法来获取指向特定页眉/页脚的指针,而无需使用自定义对象缓存或标记?
答案 0 :(得分:5)
据我所知,没有(直到iOS 6才有相同的UITableView
,footer/headerViewForSection
来电。
如果我不得不猜测为什么这是不可能的,我会说这是因为在某些布局中,UICollectionView
会自动重新布局并调整补充视图,因此可以“动态”调整视图内容有问题。但是,假设UICollectionView
没有做任何有趣的事情,比如复制视图,你应该能够将你的补充视图保存在一个单独的数组中并以这种方式修改它们 - 也就是说,不能保证这不会引入一些奇怪的或奇怪的行为(对于你使用标签和进入集合视图层次结构的建议是一样的)。
所以简短的答案是否定的 - 没有一种方法可以在API中支持这一点。如果您有一个引人注目的用例,那么可能值得通过Apple的bug报告者提交功能请求。
答案 1 :(得分:2)
执行此操作的正确方法是更新数据源中的数据模型对象,然后调用[myCollectionView reloadData]
。这将触发您的集合视图再次请求数据并根据需要更新其子视图。
答案 2 :(得分:2)
另一种可能的解决方案是让标题视图监听您广播的NSNotification
,然后那些关心的人可以根据您的标准自行更新。
或者给他们一个标签并使用viewWithTag:
。