动态设置可重用 tableViewCell 的标识符

Posted

技术标签:

【中文标题】动态设置可重用 tableViewCell 的标识符【英文标题】:Set identifiers for reusable tableViewCell dynamically 【发布时间】:2018-02-12 11:18:19 【问题描述】:

tableViewCell 包含两个标签,标签的内容在每次迭代中都会更新。对于 UI 测试,我需要设置标签的标识符以检查标签的内容是否与预期的相同。 如何为可重用单元格内的标签动态设置标识符?

@interface MyDetailsTableViewCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UIDLabel *myDetailsTitlelabel;
@property (weak, nonatomic) IBOutlet UIDLabel *myDetailsContentLabel;

@end

这是我的 tableViewCell 中的两个标签。

【问题讨论】:

尝试将标签与标签和单元格相关联 展示你的设计,你想用表格列表实现。 尝试使用 accessibilityIdentifier 这样的属性 label.accessibilityIdentifier = "label1" 但是我可以使用这个属性为每次迭代动态更改标识符吗? 【参考方案1】:

我假设您的 tableView 已全部设置并正常工作。

cellForRowAt 函数中,您可以为每一行动态设置 ID。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "<your_reuse_identifier>", for: indexPath) as! MyDetailsTableViewCell
    cell.myDetailsTitlelabel.text = "id" // set your label text here    
    cell.myDetailsTitlelabel.accessibilityIdentifier = "id" // set your dynamic id here
    cell.myDetailsContentLabel.text = "id" // set your label text here    
    cell.myDetailsContentLabel.accessibilityIdentifier = "id" // set your dynamic id here
    return cell

【讨论】:

以上是关于动态设置可重用 tableViewCell 的标识符的主要内容,如果未能解决你的问题,请参考以下文章

IOS之TableViewCell重用机制避免重复显示问题

如何使用动态重用标识符设置和出列自定义 UITableViewCell?

使用带标识符的双端可重用单元格获取 UIView 时,UIFooterView 未显示

TableViewCell的几种重用方式的区别

TableViewCell的几种重用方式的区别

重用 tableviewcell 中的约束和高度未更新