背景是黑色的,细胞是白色的,尽管没有一个细胞显示在simulator?中,有人知道这可能是什么原因吗?

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)
    }

}

最佳答案

更新:
按如下方式以编程方式初始化chatlog视图控制器意味着不调用uiCollectionView数据源方法,例如不调用collectionView(_:cellForItemAt:)
let newViewController = ChatLog(collectionViewLayout: UICollectionViewLayout())
替换为:
let newViewController = ChatLog(collectionViewLayout: UICollectionViewFlowLayout())
--
正如您已经声明了UICollectionViewController,实际上不需要在代码中显式设置collection视图的delegatedataSource属性。
只需确保在Main.storyboard中,通过单击视图控制器,然后单击身份检查器,将UICollectionViewController的类设置为chatlog。还要确保您已单击UICollectionViewCell并将其标识符设置为“cellid”。
如果这是一个多视图控制器项目,请确保可以通过使其成为初始视图控制器或从另一个视图控制器向该视图控制器提供segue/navigation来导航到chatlog视图控制器。
下面的图片概述了我的解决方案。
swift - 以编程方式使UICollectionViewController不显示单元格-LMLPHP
swift - 以编程方式使UICollectionViewController不显示单元格-LMLPHP

10-06 02:54