未调用UICollectionView cellForItem

时间:2017-05-11 10:08:42

标签: ios swift uicollectionview uicollectionviewcell

我在基本的ViewController中实现了一个UICollectionView(collectionView) 我的集合视图必须检索5个单元格,如numberofItemInSection代码。 显示了CollectionView并调用了numbersofItemInSection函数,但未调用cellForItemAt函数,因此集合视图为空。

import UIKit


private let reuseIdentifier = "Cell"



class TestViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate{

    lazy var collectionView : UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
        cv.translatesAutoresizingMaskIntoConstraints = false
        cv.delegate = self
        cv.dataSource = self
        return cv
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Register cell classes
        self.collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

        collectionView.backgroundColor = .white
        navigationItem.title = "test"

        setupViews()
    }

    func setupViews(){
        view.addSubview(collectionView)

        collectionView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        collectionView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        collectionView.heightAnchor.constraint(equalToConstant: 60).isActive = true
        collectionView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
    }

     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 5
    }

     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
        // Configure the cell

        cell.backgroundColor = .red

        return cell
    }


}

2 个答案:

答案 0 :(得分:0)

这是你的collectionView的高度或collectionView的框架问题,那么你需要为collectionView设置合适的高度。

OR

试试这个

     override func viewDidLoad() {
                super.viewDidLoad()
                navigationItem.title = "test"

                setupViews()
                collectionView.backgroundColor = .white
                self.collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 
// remove this line if you not use xib

            }

答案 1 :(得分:0)

我检查了你的代码并且它运行正常。因为你正在使用swift 3所以你将不得不使用xCode 8 +。使用XCODE 8运行它,因为语法适用于swift 3,你将获得结果。