多次使用UICollectionView的最佳实践

时间:2018-12-17 14:08:27

标签: ios swift uicollectionview

我有一个带有自定义UICollectionViewCells的主UICollectionView。我在多个UIViewControllers中使用它。

我有一个使用相同UICollectionView的时间轴(例如)个人资料。

在这种情况下声明UICollectionView的最佳实践是什么?

我试图创建一个名为MainProductCollectionView的类,该类继承自UIViewController。在TimeLineViewController中,我像下面这样使用它。

let vc = MainProductCollectionView() //init
self.view.addSubview(vc.collectionView)

但是我不确定这是否是最佳使用方式。谢谢。

2 个答案:

答案 0 :(得分:-1)

  1. 您创建一个视图,该视图将集合视图作为子类并配置其默认方法(以及您要使用的其他方法)。我称它为CollectionViewExample.swift

根据需要将其初始化:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    guard let view = loadViewFromNib() else { return }
    view.frame = self.bounds
    self.addSubview(view)
    contentView = view 
}

包括此方法以在初始化时从笔尖加载它:

func loadViewFromNib() -> UIView? {
    let bundle = Bundle(for: type(of: self))
    let nib = UINib(nibName: nibName, bundle: bundle)
    return nib.instantiate(withOwner: self, options: nil).first as? UIView
}

为您可能需要的其他配置覆盖此方法

override func layoutSubviews() {
    ....
}
  1. 创建一个.xib并将其类设为您在上面创建的类。我称它为CollectionViewExample.xib

  2. 在情节提要上,在任何视图控制器中,您现在都可以添加视图并将其“自定义类”设置为CollectionViewExample.swift。

在任何viewcontroller.swift中,您现在都可以说 var/let collectionViewExample: CollectionViewExample!并在您希望的任何地方重复使用。

答案 1 :(得分:-2)

有2种解决方案:

  • 创建一个继承自UICollectionView并包含所有委托方法(例如celForItemAtIndexPath numberOfItemsInSection ...
  • 的自定义collectionView)。

  • xib文件中创建您的collectionViewCell,然后使用yourCollectionView.register(cellType: CustomCell.self)