自定义UITableViewCell heightForRowAt在Swift 4中不起作用

时间:2018-11-08 02:31:55

标签: ios swift uitableview uicollectionview

我从笔尖创建了一个自定义UITableView,并试图在ShopImagesViewCell的Size Inspector中更改行高。

ShopImagesViewCell.xib:

enter image description here

所以我写了代码来更改ShopImagesViewCell.swift中的行高。

class ShopImagesViewCell: UITableViewCell, UITableViewDelegate
{
    @IBOutlet weak var imageCollectionView: UICollectionView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var starView: UIView!
    @IBOutlet weak var starImageView: UIImageView!

    override func awakeFromNib()
    {
        super.awakeFromNib()
        //....
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
    { // This function does not work.
        return CGFloat(300) // 300 changes fluidly
    }
}

extension ShopImagesViewCell
{
    func setView()
    {
        self.imageCollectionView.delegate = self
        self.imageCollectionView.dataSource = self
        self.imageCollectionView.regCells(cells: ["ShopImageCollectionViewCell","ShopNonImageCollectionViewCell"])
    }
}

由于该功能无法正常工作,我试图找到一种方法并试图做到

self.tableView.delegate = self

但是,tableView不存在,我尝试使用@outlet添加ShopImagesViewCell,但这是不可能的。

如何使以上功能起作用?

如果您想对其他源代码发表评论,请尽可能添加它。

1 个答案:

答案 0 :(得分:1)

您的单元格是一个UITableViewCell,其中包含一个UICollectionView。因此,您的单元格类应符合UICollectionViewDataSource和UICollectionViewDelegate`方法。表格视图单元不应实现任何表格视图数据源或委托方法,也不应遵守表格视图协议。将它们放在带有表视图的视图控制器中。