从 XIB 加载时 UICollectionViewCell 导致崩溃
Posted
技术标签:
【中文标题】从 XIB 加载时 UICollectionViewCell 导致崩溃【英文标题】:UICollectionViewCell causing crash when loading from XIB 【发布时间】:2014-10-17 14:25:17 【问题描述】:我有一个UICollectionViewCell
子类,它现在只显示一个带有背景颜色的UIView
子视图,以表明它就在那里。
为了从 XIB 加载,我必须替换这个:
- (void)viewDidLoad
[super viewDidLoad];
[self.localPlayerItemsView registerClass:[MBTradeCollectionViewCell class]
forCellWithReuseIdentifier:CellIdentifier];
用这个:
- (void)viewDidLoad
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"MBTradeCollectionViewCell" bundle:nil];
[self.localPlayerItemsView registerNib:nib forCellWithReuseIdentifier:CellIdentifier];
这样做后,我会在collectionView:cellForItemAtIndexPath:
的第一行崩溃:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
MBTradeCollectionViewCell *aCell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier
forIndexPath:indexPath];
return aCell;
这是崩溃:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7d461780> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key itemCountView.'
使用registerClass:forCellWithReuseIdentifier:
时不会导致这个崩溃,但是它不会加载我的xib。
【问题讨论】:
检查 itemCountView 的自定义单元格插座连接。 听起来 IBOutlet 连接不正确。检查笔尖中的所有连接。 What does this mean? "'NSUnknownKeyException', reason: ... This class is not key value coding-compliant for the key X"的可能重复 【参考方案1】:在您的MBTradeCollectionViewCell
xib 文件中,不要更改文件所有者的任何内容。将top most view
的类更改为MBTradeCollectionViewCell,然后选择itemCountView
,将其连接到您的top most view
。希望这能解决问题。
【讨论】:
【参考方案2】:这种崩溃通常发生在您的插座损坏时。检查您的 nib 文件以查找名称为 itemCountView
的插座,该插座将被损坏(未正确连接)。哪个会出现红色标记。
【讨论】:
【参考方案3】:我修好了。
我进入助手模式,从物业拖到 IB,它提供了“文件所有者”或“贸易集合视图”选项?
我选择了最下面的那个,这意味着这些东西并没有与文件所有者挂钩,但事实证明它们在交易集合视图中也是可见的,并且它们被挂钩在那里。
它有效。
【讨论】:
以上是关于从 XIB 加载时 UICollectionViewCell 导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章
从 xib 加载单元格时删除 UICollectionView 中的边框