UiCollectionView не отображается - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь сделать простой collectionView и по какой-то причине не отображается вообще. Я устанавливаю изображения для некоторых пользовательских ячеек (ProfileCells) через список строк, которые я создал (страницы). Проблема в том, что не только ячейки не отображаются, но и вид коллекции также не отображается (для проверки я установил зеленый фон)

extension ProfileController: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return pages.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! ProfileCell
            let page = pages[indexPath.item]
            print("something",page)
            cell.setImage(image: page)
            return cell
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        print (CGSize(width: view.frame.width, height: view.frame.height))
        return CGSize(width: view.frame.width, height: view.frame.height)
    }
}

"loginButton" - это просто фиктивное изображение, на которое я ссылаюсь, для отображения в ячейках Collectionview.

let cellId = "cellId"

let pages: [String] = {
    let firstPage = "loginButton"
    let secondPage = "loginButton"
    let thirdPage = "loginButton"
    return [firstPage,secondPage,thirdPage]
}()

lazy var collectionView: UICollectionView = {
    let layout = UICollectionViewFlowLayout()
    layout.headerReferenceSize = CGSize.zero
    layout.scrollDirection = .horizontal
    layout.minimumLineSpacing = 0
    let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
    cv.backgroundColor = UIColor.green
    cv.dataSource = self
    cv.delegate = self
    cv.isPagingEnabled = true
    cv.showsHorizontalScrollIndicator = false
    cv.showsVerticalScrollIndicator = false

    return cv
}()

collectionView - это внутреннее представление из стека, которое я сделал (для краткости здесь не показано), хотя все другие подпредставления внутри stackView работают

override func viewDidLoad() {
    super.viewDidLoad()
   view.addSubview(stackView)
   collectionView.register(ProfileCell.self, forCellWithReuseIdentifier: cellId)
}

Вот пользовательский класс, который я создал для CollectionViewCells

class ProfileCell: UICollectionViewCell{
    //Integrate the page class into collectionviewcell
    var image: String?

    func setImage(image: String) {
        imageView.image = UIImage(named:image)
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
    }

    //Here I select the image I want to use in collectionview
    var imageView: UIImageView = {
        let iv = UIImageView()
        iv.contentMode = .scaleAspectFill
        iv.backgroundColor = UIColor.gray
        iv.clipsToBounds = true
        return iv
    }()

    //Setting up all views within collectionview
    func setupViews() {
        backgroundColor = UIColor.gray
        addSubview(imageView)
        imageView.anchorWithConstantsToTop(top: topAnchor, left: leftAnchor, bottom: bottomAnchor, right: rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0)
        imageView.heightAnchor.constraint(equalToConstant: 50)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

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