2017-05-31 37 views
1

請求數據我已經設置了UICollectionView與自定義數據源:UICollectionView不是從UICollectionViewDataSource

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) 

Collection視圖本身是正確顯示,但沒有出現細胞。

我可以從調試輸出看到,

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

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

永遠不會被調用。這是爲什麼?

+0

你有沒有嘗試過在將其添加到'self.view'後嘗試在集合視圖中調用'reloadData()'? – D4ttatraya

+0

它不會做任何事情@DashAndRest –

+0

它不會調用,因爲集合的高度爲零,因此您需要檢查collectionView的高度。 – KKRocks

回答

1

我的猜測是它被取消引用,因爲UICollectionView中的delegatedatasource是弱引用。

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

一旦你超出了你所在的任何函數的範圍,它應該被設爲零。

它應該工作,如果你使它成爲你的班級的財產。

相關問題