Swift:UICollectionView页脚没有显示

时间:2014-08-22 15:57:51

标签: ios swift uicollectionview

我的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
}

2 个答案:

答案 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可以解决问题。