如何在静态TableViewCell中显示UICollectionView?

时间:2018-12-29 11:09:17

标签: ios swift uitableview uicollectionview

我想在静态UICollectionView内显示TableViewCell

我有一个包含TableViewCell的静态CollectionView。好吧,问题在于我认为代码看起来不错,但是当我启动程序时,TableViewCell并没有向我显示CollectionView。我有些困惑,所以如果您能帮助我,我会很高兴。谢谢

TableViewController类:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var Cell = tableView.dequeueReusableCell(withIdentifier: "Action")
    switch indexPath.section {
        case 0:
            tableView.register(ScheduleCell.self, forCellReuseIdentifier: "Schedule")
            Cell = tableView.dequeueReusableCell(withIdentifier: "Schedule") as! ScheduleCell

        case 1:
            return Cell!

        case 2:
            tableView.register(MarksCell.self, forCellReuseIdentifier: "Marks")
            Cell = tableView.dequeueReusableCell(withIdentifier: "Marks") as! MarksCell

        default:
            Cell = tableView.dequeueReusableCell(withIdentifier: "Action") as! ActionCell
    }

    return Cell!
}

ActionCell:

extension ActionCell: UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 3
    }

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ActionCell", for: indexPath) as! ActionsCollectionViewCell
        var Labels = ["РАСПИСАНИЕ", "ДОМАШНИЕ ЗАДАНИЯ", "ОЦЕНКИ"]
        var Icons = ["Safari", "DZ", "Rating"]
        var Colors = [UIColor.init(red: 26/255, green: 196/255, blue: 234/255, alpha: 1),
                  UIColor.init(red: 251/255, green: 143/255, blue: 25/255, alpha: 1),
                  UIColor.init(red: 251/255, green: 25/255, blue: 118/255, alpha: 1)]
        cell.Title.text = Labels[indexPath.item]
        cell.Icon.image = UIImage.init(named: Icons[indexPath.item])
        cell.Button.backgroundColor = Colors[indexPath.item]
        return cell
    }
}

此外,我必须注意到在Storyboard中,我提到了所有类和ReuseIDs

1 个答案:

答案 0 :(得分:1)

如果您将“ UITableView”与静态单元格用作内容,则无需实现“ tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)”,则可以在情节提要中定义所有内容。

这是UITableViewController在情节提要中的样子,将自定义单元格(TableCell,CollectionCell)用于表和集合视图,并具有“ UITableViewCell”  用作包含“ UICollectionView”的数据源:

enter image description here

这是UITableViewController的实现:

class ViewController: UITableViewController {

}

class TableCell: UITableViewCell {

}

class CollectionCell: UICollectionViewCell {

}

extension TableCell: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath)

        return cell
    }

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