gpt4 book ai didi

swift - RxSwift + UITableViewCell 如何获取 heightForRowAt 中的单元格对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:57 24 4
gpt4 key购买 nike

我有一个带有 UITableView 的 View Controller 。使用 RxSwift 填充表数据:

let observable = Observable.just(data)
observable.bindTo(tableView.rx.items(cellIdentifier: "CategoryCell", cellType: CategoryCell.self)) { (row, element, cell) in
cell.setCategory(category: element)
}.disposed(by: disposeBag)

tableView.rx.setDelegate(self).disposed(by: disposeBag)

我有以下委托(delegate)功能:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
// cell = nil.
let cell = tableView.cellForRow(at: indexPath)

let screenWidth = UIScreen.main.bounds.size.width

let itemWidth = (screenWidth / 3.0) - 20
let itemHeight = (itemWidth) / 0.75 + 110

return itemHeight
}

我想从 heightForRowAt 内部访问单元格对象,但它给了我 nil。有没有办法在这里访问单元格?我一直在查看 RxCocoa 项目中的 UITableView+Rx.swift 但是没有这个功能。我还有哪些其他选择?

编辑:我试图在我的代码中实现以下目标:

class CategoryCell : UITableViewCell {
func calculateHeight() {
let screenWidth = UIScreen.main.bounds.size.width

let itemWidth = (screenWidth / 3.0) - 20
let itemHeight = (itemWidth) / 0.75 + 110

return itemHeight
}
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
// cell = nil.
guard let cell : CategoryCell = tableView.cellForRow(at: indexPath) as? CategoryCell {
return 0.0
}
return cell.calculateHeight()
}

最佳答案

调用 tableView.cellForRow(at: indexPath)tableView(_: heightForRowAt:) 中返回 nil 因为 heightForRowAt 在 之前 调用 cellForRowAt。

这里最好的选择是使用自动调整大小的单元格。 (https://www.raywenderlich.com/129059/self-sizing-table-view-cells)。另一种选择是将单元格的大小保留为模型的一部分并在此处访问它们。

关于swift - RxSwift + UITableViewCell 如何获取 heightForRowAt 中的单元格对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015448/

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