Как исправить «Использование неразрешенного идентификатора« flowLayout »» - PullRequest
0 голосов
/ 23 декабря 2018

Извините за мой плохой английский.

Я пытаюсь создать представление коллекции программно, но он говорит, что 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 голосов
/ 23 декабря 2018

Хотя я считаю, что у @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, вы, возможно, не инициализировали переменную, которую, возможно, думали, что сделали.Как правило, это простая ошибка, которую нужно устранить.

0 голосов
/ 23 декабря 2018

Вам необходимо определить collectionViewLayout, называемый flowLayout.

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

Вот учебник, который может помочь этот учебник по созданию пользовательского CVLayout.

Также, если вам нужно импортировать UIKit, нет необходимости импортировать Foundation, потому что он включен в UIKit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...