swift - "UICollectionView must be initialized with a non-nil layout parameter"但布局不为零

标签 swift uicollectionview

我试图设置一个 UICollectionViewController,但我总是得到“UICollectionView 必须使用非零布局参数初始化”,尽管我确实初始化了布局并将其设置在 viewDidLoad 中。

这就是我所拥有的(刚刚创建了这个 VC):

class NotificationVC: UICollectionViewController{

let cellId = "notificationCell"
let layout = UICollectionViewFlowLayout()

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.setNavBar()
    navigationItem.title = NSLocalizedString("notification.vc.title", comment: "Notification")
    navigationItem.rightBarButtonItem?.tintColor = UIColor.appWhite

    layout.scrollDirection = .vertical


    self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)

    // Do any additional setup after loading the view.
}
}

最佳答案

当您从另一个 View Controller 创建 NotificationVC 实例时,您应该使用 UICollectionViewFlowLayout 对象初始化该类。

如果您从另一个 View Controller 推送 NotificationVC,请像这样更改它

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
let notificationVC = NotificationVC(collectionViewLayout: layout)
self.navigationController?.pushViewController(notificationVC, animated: true)

关于swift - "UICollectionView must be initialized with a non-nil layout parameter"但布局不为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208574/

相关文章:

ios - UICollectionView:如何使用 dequeueReusableCellWithReuseIdentifier 加载比屏幕大小更多的单元格?

swift - 在 uicollectioncontroller 和 viewcontroller 之间传递单元格索引

ios - iAd 插页式服务 session 终止

ios - 节点未在 Swift 2 和 SpriteKit 中加载纹理

ios - 如何使对象免于 SKcameranode 移动

ios - while 循环条件不重新评估

swift - 如何对核心数据中的多键进行排序?

ios - 在自定义 UICollectionViewCell 中更改 UILabel 的文本颜色

ios - UICollectionViewCell 中的 UiviewControllers

ios - 选择单元格时 UICollectionView 正在滚动