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

2023-12-23

我有一个带有 UITableView 的视图控制器。表数据使用 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)

我有以下委托功能:

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 但没有这方面的功能。我还有什么其他选择?

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

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:)因为 heightForRowAt 是在特定的 indexPath 上调用的before调用 cellForRowAt。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxSwift + UITableViewCell如何获取heightForRowAt中的单元格对象 的相关文章

随机推荐

  • 是否可以设置现有 Azure blob 的内容处置?

    基于刺激在这里的答案 Azure 存储 API 内容配置 https stackoverflow com questions 20719641 azure storage api contentdisposition 以及在这里找到的信息
  • 如何使用 PendingIntent 从服务到客户端/活动进行通信?

    我一直在 Android 开发者网站上阅读以下文本 特别是在框架主题 gt 服务 gt 启动服务 http developer android com guide topics fundamentals services html Star
  • if else 在mysql中查询

    我需要 mysql 查询中嵌套 if else 条件的示例 您还可以将 case 语句用于 if else 条件 SELECT CASE field1 WHEN A THEN value is A WHEN B THEN value is
  • 为什么“splatting”关键字参数时 ** 是可选的?

    鉴于此方法定义 def foo a nil b nil p a a b b end 当我使用单个哈希参数调用该方法时 哈希总是隐式转换为关键字参数 无论 hash b 1 foo hash gt a gt nil b gt 1 foo ha
  • 在 Typescript 中创建 `toFunc` 泛型方法?

    我有一个 Ts 模型 需要填充一些属性 当前的代码简化是 var claimSummaryDetails Name this store selectSync currentUser Result Family find m gt m Me
  • 上传资源文件时,createBlockOutputStream 中 Spark HDFS 异常

    我正在尝试在集群中运行我的 JARyarn cluster但一段时间后我遇到了例外 最后INFO在失败之前是Uploading resource 我已经检查了所有安全组 确实如此hsdf ls成功但仍然收到错误 bin spark subm
  • Mapbox 与 Angular 6.“找不到地图容器”错误

    我正在开发我的第一个角度网络应用程序 我想介绍一些类似于谷歌地图的东西 由于新的计费策略 我不想使用最后一个 所以我尝试了 MapBox 按照教程 我成功创建了我需要的地图 问题是 我不知道如何在角度分量上显示它 我为地图生成了这个文件 并
  • 此上下文中仅支持原始类型或枚举类型

    我已经看到了很多关于这个主题的问题 但我无法对其中任何一个真正解决我所看到的问题进行排序 我有一个活动实体 用于跟踪分配给哪个员工以及哪个员工创建了记录并更新了记录 如果我删除 where a AssignedEmployee curren
  • PHP获取外部页面内容

    我从另一个网站获取 htmlfile get contens 我的问题是如何获得特定的标签值 假设我有 div p class paragraph 1800 p div 我怎样才能获得段落的值 谢谢 如果这个例子真的那么简单 你可以只使用正
  • 如何从 java 客户端正确使用 Prometheus Histogram 来跟踪大小而不是延迟?

    我有一个处理集合的 API 该API的执行时间与集合大小有关 集合越大 花费的时间就越多 我正在研究如何使用普罗米修斯做到这一点 但不确定我是否正确地做事 该领域的文档有点缺乏 我做的第一件事是定义一个摘要指标来衡量 API 的执行时间 我
  • 获取“单例类型”的类型

    我们可以通过 Shapeless 创建文字类型 import shapeless syntax singleton var x 42 narrow x Int 42 42 但我该如何操作Int 42 如果甚至不可能创建类型别名 则作为类型
  • python 中的纯文本格式[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个用 python 创建
  • iOS 如何让 MapKit 显示自定义室内地图?

    我正在尝试创建我正在工作的办公室的地图 我有一个高分辨率图像 并且希望将其自动旋转到用户前进的方向 从而允许用户在地图上导航 我认为这可以使用 CoreMotion CoreLocation 和 UIScrollView 来完成 但这似乎涉
  • 错误:字符串类型的值没有成员 ComponentsSeparatedByCharactersInSet

    以下代码引发以下错误 字符串类型的值没有成员组件ComponentSeparatedByCharactersInSet 此代码来自另一个项目 该项目之前在 swift 版本 1 或 2 中有效 但不再有效 import Foundation
  • C++/STL 是否支持按属性对对象进行排序?

    我想知道STL是否支持这一点 假设我有一堂这样的课 class Person public int getAge const double getIncome const 和一个向量 vector
  • Scala 中抽象特征的语义

    我想知道使用的语义是什么abstract关键字与 a 组合trait is 如果该特征没有定义任何抽象方法 则abstract关键字不会阻止我创建实例 scala gt abstract trait T defined trait T sc
  • 未解析的外部符号——模板类[重复]

    这个问题在这里已经有答案了 可能的重复 C 模板 链接错误 https stackoverflow com questions 1353973 c template linking error 我正在尝试实现选择排序 但我不断收到错误 打印
  • 加载 VTT 文件时出现跨域错误

    我刚开始在 HTML 5 中使用音频标签 并且想要构建一个播放器 我想在轨道标签中使用 VTT 文件进行测试 看看隐藏式字幕如何工作 这是我的代码
  • 如何异步加载CSS

    我正在尝试消除 2 个在我的网站上出现渲染阻塞的 CSS 文件 它们出现在 Google Page Speed Insights 上 我采用了不同的方法 但没有一个成功 不过最近我发现了一个帖子异步思考 https css tricks c
  • RxSwift + UITableViewCell如何获取heightForRowAt中的单元格对象

    我有一个带有 UITableView 的视图控制器 表数据使用 RxSwift 填充 let observable Observable just data observable bindTo tableView rx items cell