Как отобразить UICollectionView внутри статического TableViewCell? - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу отобразить UICollectionView внутри статического TableViewCell

У меня есть статический TableViewCell, который содержит CollectionView.Проблема в том, что, на мой взгляд, код выглядит хорошо, но когда я запускаю программу, TableViewCell не показывает мне CollectionView.Я немного растерялся, поэтому буду очень рад, если вы мне поможете.Спасибо

TableViewController Class:

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
    }
}

Кроме того, я должен отметить, что вРаскадровка я упомянул все классы и ReuseIDs

1 Ответ

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

Если вы используете «UITableView» со статическими ячейками в качестве содержимого, вам не нужно реализовывать «tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath)», все может быть определено в Storyboard.

Вот как 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...