如何解决“使用无法解析的标识符'flowLayout'”

时间:2018-12-23 01:36:35

标签: swift uicollectionview

对不起,我的英语不好。

我正在尝试以编程方式创建集合视图,但是它说flowLayout是一个未解决的标识符。

import Foundation
import UIKit
import RxSwift

class ChapterViewController: UIViewController, UICollectionViewDataSource, 
UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {

private var myCollectionView: UICollectionView!
var chapterName: String?
var bibleArray = BibleBooksMock().booksArray

override func viewDidLoad() {
    super.viewDidLoad()

    title = chapterName
    view.backgroundColor = UIColor.white
    self.myCollectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: flowLayout)
    myCollectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "collectionCell")
    myCollectionView.delegate = self
    myCollectionView.dataSource = self
    myCollectionView.backgroundColor = UIColor.cyan

    self.view.addSubview(myCollectionView)
}

2 个答案:

答案 0 :(得分:3)

虽然我相信@Alex Bailey有一个很棒的答案,但我想添加更多内容。

let flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()        
self.myCollectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: flowLayout)

我想弄清楚为什么你的不起作用以及为什么不起作用。您有

self.myCollectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: flowLayout

但是,如果您查看代码,则没有名为flowLayout的变量。因此,Swift正在寻找一个未预先初始化的名为flowLayout的变量。在正确的答案中,我们将flowLayout初始化为

let flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 

因此,我们知道flowLayout是什么:UICollectionViewFlowLayout。因此,在Swift中,如果看到unresolved identifier错误,则可能尚未初始化可能以为已初始化的变量。通常这是一个简单的错误即可解决。

答案 1 :(得分:1)

您需要定义一个称为flowLayout的collectionViewLayout。

let flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()        
self.myCollectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: flowLayout)

Here's一本教程,可帮助this创建自定义CVLayout。

如果您需要导入UIKit,也不需要导入Foundation,因为它包含在UIKit中。