Jer*_*iez 2 ios ios6 uicollectionview
我最近开始玩令人敬畏的UICollectionView API,取得了合理的进展,但几乎整天都遇到了问题,我希望有人可以帮助我:
我需要为某些单元格的属性添加一些自定义细节.为了做到这一点,正确的方法似乎是子类UICollectionViewLayoutAttributes并将我需要的属性添加到我的子类.到目前为止一切都那么好,除了当我返回我的LayoutAttributesSubclass时,我总是得到,不知何故模糊,跟随错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: key cannot be nil'
Run Code Online (Sandbox Code Playgroud)
试图跟踪这一段时间后,我的印象是错误与RepresentElementKind和representElementCategory在我的子类的实例中是nil有关.但这些属性是只读的,所以我不能设置它们.我设法以某种方式通过欺骗,获取常规UICollectionViewAttributes实例,然后使用object_setClass将其更改为LayoutAttributesSubclass来绕过错误,但这会引发大量其他问题,而且对我来说似乎相当阴暗.
简而言之,有谁知道上面的错误意味着什么,以及如何正确创建/使用UICollectionViewLayoutAttributes子类?
The*_*ind 12
设置自定义属性时,需要通过覆盖UICollectionViewLayout类中的+(Class)layoutAttributesClass 来子类化UICollectionViewLayoutAttributes 和子类UICollectionViewLayout并"声明"自定义属性子类类名.系统调用此类方法,以查看在使用工厂方法实例化/出列布局属性对象时是否存在要提供的自定义类.
@interface YourCustomCollectionViewAttributes : UICollectionViewLayoutAttributes
@property (nonatomic) UIEdgeInsets myCustomProperty
@end
@interface YourCustomCollectionViewLayout : UICollectionViewLayout
@end
@implementation YourCustomCollectionViewLayout
+ (Class)layoutAttributesClass
{
return [IRTableCollectionViewLayoutAttributes class];
}
@end
Run Code Online (Sandbox Code Playgroud)
根据文档,这是正确的,应该可以防止您遇到的特定错误.此外,当您实现自定义iVars时,请确保为 - (id)copyWithZone实现覆盖:或者UICollectionView将丢失您应用于自定义集合视图对象的任何自定义值.
| 归档时间: |
|
| 查看次数: |
5077 次 |
| 最近记录: |