要显示特定集合视图单元格上的视图?

时间:2019-04-13 02:45:32

标签: ios swift xcode collectionview

我正在尝试在集合视图控制器中将预编码的页面/视图单元格显示在它们各自的单元格上。

我没有使用情节提要板创建了所有页面。

我已经创建了3个单元格,但是现在我试图弄清楚如何将每个视图放入各自的视图中。我创建了一个由3个类(页面)组成的数组,但无法弄清楚如何将它们连接到“ cellForItemAt”中的单独单元格,我尝试使用indexPaths和collectionview.cellForItem(位于___),但是我无法实现我想要的。

如何将数组中的页面连接到正确的单元格?

谢谢

let pages = [AboutPageCell, MainPageCell, InfoPageCell]

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

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

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath)
    return cell
}

1 个答案:

答案 0 :(得分:0)

首先将其添加到ViewController

let cellIdentifier = ["AboutPageCell", "MainPageCell", "InfoPageCell"]

然后在viewDidLoad中注册您的单元格,如

tableView.register(AboutPageCell.self, forCellReuseIdentifier: cellIdentifier[0])
tableView.register(MainPageCell.self, forCellReuseIdentifier: cellIdentifier[1])
tableView.register(InfoPageCell.self, forCellReuseIdentifier: cellIdentifier[2])

您的cellForItemAt

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        var cellToReturn = collectionView.dequeueReusableCell(withIdentifier: cellIdentifier[indexPath.row])

        switch indexPath.row {
        case 0:
            let aboutPageCell = cellToReturn as! AboutPageCell

            // Configure you propertie here

            cellToReturn = aboutPageCell
        case 1:
            let mainPageCell = cellToReturn as! MainPageCell

            // Configure you propertie here

            cellToReturn = mainPageCell
        case 2:
            let infoCell = cellToReturn as! InfoPageCell

            // Configure you propertie here

            cellToReturn = infoCell
        default:
            break
        }

        return cellToReturn
    }