我最近开始使用很棒的 UICollectionView API,取得了合理的进展,但几乎整天都被困在一个问题上,我希望有人可以帮助我:
我需要为某些单元格的属性添加一些自定义细节。为了做到这一点,正确的方法似乎是继承 UICollectionViewLayoutAttributes 并将我需要的属性添加到我的子类中。到目前为止一切顺利,除了当我返回我的 LayoutAttributesSubclass 时,我总是得到以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: key cannot be nil'
尝试追踪了一段时间后,我的印象是该错误与代表元素种类有关,并且代表元素类别在我的子类实例中为零。但是这些属性是只读的,所以我不能设置它们。我设法通过作弊以某种方式绕过错误,获取常规 UICollectionViewAttributes 实例,然后使用 object_setClass 将其更改为 LayoutAttributesSubclass,但这会引发大量其他问题,而且对我来说似乎相当阴暗。
简而言之,有谁知道上面的错误是什么意思,以及如何正确创建/使用 UICollectionViewLayoutAttributes 子类?