Ios UICollectionView到Swift中的UIView
当我尝试将CollectionView使用到UIView时出现问题 这是我的观点的代码示例Ios UICollectionView到Swift中的UIView,ios,swift,uiview,uicollectionview,Ios,Swift,Uiview,Uicollectionview,当我尝试将CollectionView使用到UIView时出现问题 这是我的观点的代码示例 class CampanasView: UIView, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! class func create() -> CampanasView { let nib = UINib(nibNa
class CampanasView: UIView, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var collectionView: UICollectionView!
class func create() -> CampanasView {
let nib = UINib(nibName: "CampanasView", bundle: nil)
let view = nib.instantiate(withOwner: self, options: nil)[0] as? CampanasView
//if you use xibs:
view?.collectionView.register(UINib(nibName: "CampanaCell", bundle: nil), forCellWithReuseIdentifier: "CampanaCell")
view?.collectionView.reloadData()
return view!
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 20
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CampanaCell", for: indexPath) as! CampanaCell
return cell
}
}
这是锡伯银行
在我的ViewController中,我有以下代码将UIView添加到ViewController中
var campanasView: CampanasView?
override func viewDidLoad() {
super.viewDidLoad()
self.campanasView = CampanasView.create()
_ = JAutolayouts.fillContainer(self.contentView, view: self.campanasView!)
}
这就是错误所在
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+[WinUp.CampanaView collectionView:numberOfItemsInSection:::未识别的选择器发送到类0x10beac100”
您的问题与xib的设置有关,您需要取消集合视图委托和数据源与文件所有者的链接,并在
create
方法中添加这两行
view?.collectionView.dataSource = view
view?.collectionView.delegate = view
正如我上面所说的,您需要取消数据源的链接并委派CollectionView
您的create
方法必须如下所示
class func create() -> CampanasView {
let nib = UINib(nibName: "CampanasView", bundle: nil)
let view = nib.instantiate(withOwner: self, options: nil)[0] as? CampanasView
//if you use xibs:
view?.collectionView.register(UINib(nibName: "CampanaCell", bundle: nil), forCellWithReuseIdentifier: "CampanaCell")
view?.collectionView.dataSource = view
view?.collectionView.delegate = view
view?.collectionView.reloadData()
return view!
}
您可以发布CampanaView xib文件的设置情况吗?还有,谁调用您的create()以及何时调用?请尝试以下操作:加载项viewDidLoad方法collectionView.DataSource=self@Smartcat我在将视图实例化为ViewControlleries时使用的方法create()设置了一个数据源,并将其委托给dexib@user1000