我有一个带有自定义UICollectionViewCells的主UICollectionView。我在多个UIViewControllers中使用它。
我有一个使用相同UICollectionView的时间轴(例如)个人资料。
在这种情况下声明UICollectionView的最佳实践是什么?
我试图创建一个名为MainProductCollectionView的类,该类继承自UIViewController。在TimeLineViewController中,我像下面这样使用它。
let vc = MainProductCollectionView() //init
self.view.addSubview(vc.collectionView)
但是我不确定这是否是最佳使用方式。谢谢。
答案 0 :(得分:-1)
根据需要将其初始化:
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() {
....
}
创建一个.xib并将其类设为您在上面创建的类。我称它为CollectionViewExample.xib
在情节提要上,在任何视图控制器中,您现在都可以添加视图并将其“自定义类”设置为CollectionViewExample.swift。
在任何viewcontroller.swift中,您现在都可以说
var/let collectionViewExample: CollectionViewExample!
并在您希望的任何地方重复使用。
答案 1 :(得分:-2)
有2种解决方案:
UICollectionView
并包含所有委托方法(例如celForItemAtIndexPath
numberOfItemsInSection
... 或
xib
文件中创建您的collectionViewCell,然后使用yourCollectionView.register(cellType: CustomCell.self)