gpt4 book ai didi

ios - tableRow 内的 tableView.dequeueReusableCell()(_ :heightForRowAt:) method

转载 作者:行者123 更新时间:2023-11-28 15:57:10 25 4
gpt4 key购买 nike

我需要为我拥有的每个 table view cell 指定一个特定的高度。高度取决于内容(= cell 内的 UITextField 的高度)。

为了计算它的高度,我想创建一个“prototypeCell”并向其中添加文本以获得所需的高度。这是我唯一需要这个创建的单元格的东西。我试过这个:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

let entry = fetchedResultsController.object(at: indexPath)

guard !entry.isFault else { // some entries are faults, somehow
return 0
}

let prototypeCell = tableView.dequeueReusableCell(withIdentifier: "bitCell") as! BitCell
prototypeCell.configure(entry: entry) // add text and stuff

// .cellContentHeight calculates the height I need for the cell
return prototypeCell.cellContentHeight + baseRowHeight
}

我有两个问题:

  1. 我跳过了所有错误的 entry 对象(当我用 TableView 打开应用程序时,有很多错误)。这有什么负面影响吗?

  2. 我可以在此方法中使用 tableView.dequeueReusableCell() 吗?据我了解,它使现有单元格出列并创建一个新单元格。但之后我有点把这个细胞扔掉了。这不好吗?

如果您需要更多代码,请告诉我。我不确定,需要什么来回答这个问题。

提前致谢!

最佳答案

您可以在您的 UITableViewCell 文件中创建类方法并将文本传递给此方法并返回 CGFloat 以获取单元格高度。我为带有标签的单元格编写了此方法,但如果需要,您可以将其与 UITextField 一起使用

class func suggestedHeight(text:String) -> CGFloat{
let label = UILabel(frame:CGRectMake(0,0,UIScreen.mainScreen().bounds.size.width - LABEL_LEFT_AND_RIGHT_PADDING,1))
label.font = UIFont(name: "Regular", size: 14)
label.numberOfLines = 0
label.text = text
label.sizeToFit()
return TOP_PADDING + label.frame.height
}

然后在heightForRow

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let entry = fetchedResultsController.object(at: indexPath)
return BitCell.suggestedHeight(text:entry)
}

关于ios - tableRow 内的 tableView.dequeueReusableCell()(_ :heightForRowAt:) method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com