如何在iOS中更改内部表格视图单元格的单元格高度?

时间:2019-02-11 08:54:20

标签: ios swift uitableview

我在静态表视图中有一个动态表视图。我无法根据单元格内容更改单元格高度。我尝试了各种方法,例如

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if (ProfileData.profileViewType == .favourite) {
        if let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell", for: indexPath) as? ProfileCell {  // gives EXC_BAD_ACCESS in SimpleCheckbox library
            cell.favouritesTitleLabel.numberOfLines = 0
            cell.favouritesTitleLabel.sizeToFit()
            print(cell.favouritesTitleLabel.text)
            let height = cell.favouritesTitleLabel.text!.height(withConstrainedWidth: cell.frame.width - 64, font: UIFont(name: "Roboto", size: 17.0)!)
            print(height + 16)
            return height + 16
        }
    }
    return UITableView.automaticDimension
}

我尝试设置UITableView.automaticDiemension,但是它不能适应文本视图。它越来越大。如果我尝试tableView.dequeueReusableCell(withIdentifier: "profileCell") as! ProfileCell,则只会得到两个单元格的内容,而其余的则不会得到文本值。

当前的UI屏幕截图是: UI screenshot

我在viewDidLoad()中设置了以下表格视图配置:

profileTableView = ProfileSectionTableView()
profileTableView.profileDelegate = self
profileSectionTableView.delegate = profileTableView
profileSectionTableView.dataSource = profileTableView
profileSectionTableView.rowHeight = UITableView.automaticDimension
profileSectionTableView.estimatedRowHeight = 44

1 个答案:

答案 0 :(得分:1)

调用func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath)时,必须再次设置cellData,但要通过单元格获取数据。然后计算高度。