我的UICollectionView的页脚未显示任何子视图。我四处寻找答案,但似乎没有什么工作在我的情况下。我不确定它是否是Swift中的东西,或者我只是遗漏了一些东西。
在我的故事板中,我检查了Section Footer
框并在页脚视图中添加了几个按钮。我已将可重用标识符设置为footer
,并在视图控制器中将其注册为a。然后我拨打了collectionView(collectionView: UICollectionView!, viewForSupplementaryElementOfKind kind: String!, atIndexPath indexPath: NSIndexPath!)
来设置它。但是,当我运行应用程序时,页脚不会显示任何子视图(footer.subviews.count
= 0)。页脚的框架是正确的,但为什么我放在故事板中的子视图没有显示?
以下是代码:
override func viewDidLoad() {
...
uiCollectionView.registerClass(MyFooterView.classForCoder(), forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "footer")
}
func collectionView(collectionView: UICollectionView!, viewForSupplementaryElementOfKind kind: String!, atIndexPath indexPath: NSIndexPath!) -> UICollectionReusableView! {
let reusableView:MyFooterView = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionFooter, withReuseIdentifier: "footer", forIndexPath: indexPath) as MyFooterView
println("Footer subivews: \(reusableView.subviews.count)") // 0
return reusableView
}
答案 0 :(得分:1)
尝试删除registerClass行:
uiCollectionView.registerClass(MyFooterView.classForCoder(), forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "footer")
registerClass仅在以编程方式创建视图/单元格时使用。如果您在故事板中创建了它,那么registerClass将覆盖故事板中的那个。
答案 1 :(得分:1)
使用registerNib
代替registerClass
为我工作,
IBcollectionView.registerNib(UINib(nibName: id, bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: id)
registerClass
时,它只是从该类创建新对象,并且不会加载nib的视图,但调用registerNib
可以解决问题。