- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在对 tableView
是否呈现单元格进行单元测试。
我发现 tableView.cellForRow(at:)
返回 nil,而 tableView.dataSource?tableView(tableView:cellForRowAt:)
返回正确的单元格。
这是我的单元测试代码。
it("renders one option text") {
let indexPath = IndexPath(row: 0, section: 0)
let cell = sut.tableView.dataSource?.tableView(sut.tableView, cellForRowAt: indexPath)
let cell2 = sut.tableView.cellForRow(at: indexPath)
expect(cell?.textLabel?.text).toEventually(equal("A1")) // test suceeded
expect(cell2?.textLabel?.text).toEventually(equal("A1")) // test failed
}
所以我很好奇这两种方法的区别。
Apple 的文档说如果单元格不可见,tableView.cellForRow(at:)
返回 nil,所以我理解 tableView.cellForRow(at:)
单元测试时返回 nil,但我不确定 调用这两种方法的时间顺序 以及 tableView.cellForRow(at:)
获得正确值(单元格)的时间
.
最佳答案
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
此方法用于根据 tableView 的要求生成或出列单元格。这不是 UITableView 成员方法。相反,它是一个协议(protocol)方法,另一个对象(将成为数据源)将实现并返回值。因此,无论我们是在进行单元测试还是在调试应用程序,它总是会返回一个单元格。
tableView.cellForRow(at:)
此方法不是生成器方法。它是 UITableView 的成员方法,作为 eg 的实用方法。为了获取选定的行,我们使用 tableView.selectedRow。所以它应该返回任何 indexPath 的单元格。
正如我们所知,UITableView 不会创建与绘制的行相等的单元格。假设你想绘制 100 行,然后 UITableView 只创建除了可见单元格之外的几个额外单元格。因此,如果您传递任何不在可见行中的 indexPath,那么实际上该单元格不存在。因为 tableview 正在等待您滚动并重复使用未使用的单元格。因此,无论您是在进行单元测试还是在应用程序上工作,对于不可见的单元格,它始终会显示为 nil。
关于ios - tableView.cellForRow(在 :) and tableView. dataSource?tableView(tableView:cellForRowAt :) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735018/
每当用户位置发生显着变化时,我都会尝试从网络服务器加载数据。我的问题是,对于任何位置更改,tableview 都会调用“numberOfRows”,但它会等待 30 秒,直到调用“cellForRow
我已经使用获取函数将所有内容提取到字典数组中,当我在行的 TableView 单元格中使用它时,它是空白的。 此外,我无法使用数组计数作为行数函数,因为它是空的。我哪里出错了? 整个类代码如下: va
如果我们在两个单元格中确实有相同的内容(例如 2 个标签和 1 个 ImageView ),谁能帮助我优化以下代码。 - (UITableViewCell *)tableView:(UITableVi
这是今天发生在我身上的一件奇怪的事情: 我正在使用表格 View 来显示接下来 7 天的事件。 numberOfRowsInSection 被硬编码为始终返回 7。 func tableView(_
我有一个 numberOfSections... 方法,如下所示: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
我看了很多帖子,仍然不确定如何解决这个问题。希望有人能帮忙。 它一直工作到最后一个数据源方法 cellForRow。那时我可以获得每个部分的正确 NSSet,但无序。对关系属性的内省(introspe
我刚刚发现当单元格不可见时 tableView.cellForRow(at: index) 返回 nil。即使它出列了,有什么办法可以得到这个细胞吗? 编辑: 我想要实现的是一个自定义副本,它将复制所
所以我有这个功能。 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableView
我正在做一个搜索栏,当您输入“nike”一词时,它必须显示自定义单元格“shop Types”,该单元格的标题中包含该名称,而且还包含品牌 nike(如果品牌数组中存在该品牌)。 目前我设法在表格 V
我有问题,我的应用程序在 cellForRowAtIndexPath 上崩溃,因为我想为 2 个不同的行添加 2 个不同的自定义表格 View 单元格。 查看我的代码。 -(UITableViewCe
我的 willDisplay 中有以下代码: func tableView(_: UITableView, willDisplay cell: UITableViewCell, forRowAt in
我有一个 View ,其中顶部有一个按钮,底部有一个带有自定义单元格的表格 View 自定义单元格我有一个文本字段,我试图通过点击顶部的那个按钮来访问 tableview 单元格之外的文本字段内容以获
我创建了一个包含所有 UITableView 协议(protocol)方法的类。我在 ViewController 中成功地使用了它,该 ViewController 的场景中有一个 tablevie
我有一个名为 RetrievePosts() 的函数,它观察 Firebase 数据库并获取我的模型的值。我在 viewdidload() 中运行它。 我的 cellForRow 根据检索到的信息更新
我正在调用 JSON 并将数据保存在数组中,然后重新加载 tableView,当我使用 dequeueReusableCell 时一切正常,但是当我更改为 cellForRow每次我设置单元格时都会崩
我不明白我做错了什么。我有一个名为 TblView_Categorie 的 UITableView,我想要做的是在所需的索引路径处获取单元格: 这是我的代码: let myRecordindex =
我正在使用带有自定义单元格的 UITableView。 它工作正常,但问题是当 UITableView 中只有一个或两个单元格时。 它还为空单元格提供分隔符。 是否可以只为使用我的自定义单元格加载的单
背景:我正在尝试实现一个可以折叠和展开的分段表格 View 。折叠时,表格会记住选择的内容并在展开时保留选择状态。 问题:a 部分已扩展并正常运行。该单元格已按应有的方式被选中。但是,位于同一位置但下
我在许多UIViewControllers中都有UITableView。该 View Controller 从 api 加载一些数据并将它们放置在 self.data 属性中。然后 TableView
我有一个 UITableView 和一个自定义单元格 IconsTableViewCell,其中包含一个 UIImageView 和一个 UILable。 如果之前选择了一行,当用户点击新行时,将取消
我是一名优秀的程序员,十分优秀!