UICollectionView不要求来自UICollectionViewDataSource的数据

时间:2017-05-31 15:23:38

标签: ios swift uicollectionview

我已使用自定义数据源设置UICollectionView

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
let dataSource = DataSource(storage)
let delegate = DelegateFlow()
layout.itemSize = CGSize(width: 90, height: 120)

paymentsHistory = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
paymentsHistory.delegate = delegate
paymentsHistory.dataSource = dataSource
paymentsHistory.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")

self.view.addSubview(paymentsHistory)

集合视图本身正确显示,但没有单元格出现。

我可以从调试输出看到,

collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

永远不会被召唤。那是为什么?

1 个答案:

答案 0 :(得分:1)

我的猜测是它被解除引用,因为UICollectionView中的delegatedatasource是弱引用。

weak open var delegate: UICollectionViewDelegate?
weak open var dataSource: UICollectionViewDataSource?

一旦你超出了你所处的任何职能的范围,就应该没有。

如果你把它作为你班级的财产,它应该有效。