加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在UICollectionViewCell上设置.reuseIdentifier

发布时间:2020-12-15 01:41:23 所属栏目:百科 来源:网络整理
导读:我有一个特定的UICollectionViewCell,我想自己实例化,并添加到UICollectionView.为了使其工作,UICollectionViewCell实例需要设置其.reuseIdentifier属性. 通常,描述单元格的类或Nib是在集合视图中注册的,集合视图使用以下方法实例化已设置了.reuseIdentifier
我有一个特定的UICollectionViewCell,我想自己实例化,并添加到UICollectionView.为了使其工作,UICollectionViewCell实例需要设置其.reuseIdentifier属性.

通常,描述单元格的类或Nib是在集合视图中注册的,集合视图使用以下方法实例化已设置了.reuseIdentifier的单元格:

- registerClass:forCellWithReuseIdentifier:
- registerNib:forCellWithReuseIdentifier:

但是,由于我在集合视图之外构建此单元格,因此这些单元格不适用.

当我自己创建单元格时,似乎无法设置其.reuseIdentifier(因为它是一个只读属性,并且没有初始化它的init …方法).

如果未设置.reuseIdentifier,则在添加单元格时,UICollectionView会引发异常.此行为与UITableView不同,其中重用标识符是可选的.

设置集合视图单元的重用标识符的简单解决方法是将其嵌入.xib文件并使用标识符框,然后使用标识符框创建一个实例

[NSBundle.mainBundle loadNibNamed:@"MyCellName" owner:self options:nil][0];

然后我可以传递上面实例化的UICollectionViewCell,一切正常.

……但这似乎是一个非常愚蠢和随意的箍跳过.是否有其他方法可以在没有.xib-wrapper绕行的情况下在单元实例上设置此属性?

更新:Apple的文档说明了这一点:

To simplify the creation process for your code,the collection view requires that you always dequeue views,rather than create them explicitly in your code.

…实际上并非如此,因为它不需要这个(即,只要它们的标识符以某种方式设置,外部实例化单元格就可以正常工作,例如,如果从.xib加载),它也不会“在我的特定用例中简化了我的代码的创建过程(而不是需要额外的文件;进一步要求集合视图创建这些复杂的一次性操作会很麻烦).

但上述情况似乎暗示问题的答案是否定的:创建可用的单元格是有意“困难”的,除非让集合视图出列.

解决方法

使用这两种方法.

– registerNib:forCellWithReuseIdentifier:
– dequeueReusableCellWithReuseIdentifier:forIndexPath:

见苹果UICollectionView Class Reference

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读