nib中的重用标识符与用于注册nib的标识符不匹配

时间:2015-08-07 10:04:34

标签: xcode uicollectionview uicollectionviewcell swift2 ibdesignable

我有一个用Swift编写的框架/模块,它提供了一些具有IBDesignable功能的自定义控件。

目前我正在开发基于CollectionView的控件。 CollectionView和自定义CollectionViewCell构建在Nib文件中。要加载CollectionViewNib并添加Designable功能,我使用此NibDesignable类。在初始化CollectionView之后,我注册了CollectionViewCell,如下所示:

let cellIdentifier = "collectionViewCell"

required public init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.setup()
}

override init(frame: CGRect) {
    super.init(frame: frame)
    self.setup()
}

private func setup() {
    let bundle = NSBundle(forClass: self.dynamicType)
    self.collectionView.registerNib(UINib(nibName: "CollectionViewCell", bundle: bundle), forCellWithReuseIdentifier: self.cellIdentifier)
}

将我的Framework作为嵌入式二进制文件添加到另一个应用程序后,我可以按预期使用我的新自定义CollectionView,但不幸的是,Designable功能不能正常工作,而是出现以下错误消息:

IB Designables: Failed to update auto layout status: 
The agent raised a "NSInternalInconsistencyException" exception: 
view reuse identifier in nib (ibCollectionViewCell) does not match the identifier used to register the nib (collectionViewCell)

如上所述,我的控件在模拟器和手机上工作,所以不要使用不同的标识符。我不知道XCode在哪里得到这个 ibCollectionViewCell 标识符,但当我将其用作CollectionViewCell的标识符时,每件事都像魅力一样。

这个标识符来自哪些想法以及为什么XCode无法使用我自己的标识符加载我的自定义CollectionViewCell?

1 个答案:

答案 0 :(得分:0)

从XCode 7 Beta 4更新到Beta 5后,错误消失了。所以我假设在以前的版本中有一些错误