背景为黑色,单元格为白色,但simulator?
中没有任何单元格显示任何人都知道这可能是什么原因?< / p>
import UIKit
import Foundation
class ChatLog: UICollectionViewController, UITextFieldDelegate, UICollectionViewDelegateFlowLayout {
let cellId = "cellId"
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.backgroundColor = UIColor.black
collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath)
cell.backgroundColor = UIColor.white
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.height, height: 80)
}
}
答案 0 :(得分:4)
<强>更新强>
如下所示以编程方式初始化ChatLog视图控制器意味着不调用UICollectionView数据源方法,例如不调用collectionView(_:cellForItemAt:)
。
let newViewController = ChatLog(collectionViewLayout: UICollectionViewLayout())
替换为此:
let newViewController = ChatLog(collectionViewLayout: UICollectionViewFlowLayout())
-
当您声明UICollectionViewController
时,实际上并不需要在代码中明确设置,即集合视图的delegate
和dataSource
属性。
只需确保在Main.storyboard
中,您已通过单击视图控制器然后单击身份检查器将UICollectionViewController
的类设置为ChatLog。同时确保您已点击UICollectionViewCell
并将其标识符设置为“cellId”。
如果这是一个多视图控制器项目,请确保可以通过使其成为初始视图控制器或从另一个视图控制器向此视图控制器提供segue /导航来导航到ChatLog视图控制器。
下面的图片概述了我的解决方案。
答案 1 :(得分:0)
设置delegate
的{{1}}和数据源。仅当您设置了collectionView
和datasource
时,才会调用delegate
和numberOfItemsInSection
方法(cellForItemAtIndexpath
,delegate
等)。您可以在代码或故事板中设置它(如果您使用故事板来设计datasource
)
在collectionView
中,您可以添加
viewDidLoad