【问题标题】:Setting values for custom table cell UILabels in tableView(:didSelectRowAt)在 tableView(:didSelectRowAt) 中为自定义表格单元格 UILabel 设置值
【发布时间】:2020-03-07 21:40:30
【问题描述】:

我有一个用于 UIViewController 基类的方法,该基类使用具有动态原型和 1 个原型单元格和右侧细节单元格样式的表视图:

func tableView(_ homeworkTable: UITableView, didSelectRowAt indexPath: IndexPath) {
     homeworkTable.deselectRow(at: indexPath, animated: true)
     if let cell = homeworkTable.cellForRow(at: indexPath) {
        if cell.detailTextLabel?.text == "" {
           let homeworkWord = homeworkWords[indexPath.row]
           if homeworkWord.isEmpty == false {
              let split = homeworkWord.components(separatedBy: "::")
              cell.detailTextLabel?.text = split[1]
           }
        } else {
          cell.detailTextLabel?.text = ""
        }
     }

     let now: TimeInterval = Date().timeIntervalSince1970
     if (now - lastClick < 0.3) && (lastIndexPath?.row == indexPath.row ) {
        self.scrollToTop()
     }
     lastClick = now
     lastIndexPath = indexPath as NSIndexPath
}

我有另一个 UIViewController 使用 XIB 文件中的自定义表格单元格。它有一个按钮和 2 个 UILabel。我为按钮和占据单元格左手边的 UILabel 做了一切工作。但是,当在具有自定义单元格的视图控制器中的 didSelectRowAt 中使用时,在第一个视图控制器中的上述方法中起作用的行:

如果让 cell = tableView.cellForRow(at: indexPath)

似乎不允许我使用类似的东西:

cell.foreignWord.text = split[1]

对于自定义单元格,其中 foreignWord 是自定义单元格中的第二个 UILabel。

我得到错误:

UITabelViewCell 没有成员“foreignWord”。

我已将笔尖注册到 tableView,并进行了所有常规设置。我知道两个 viewController 之间的区别在于一个使用单元原型和另一个自定义 xib 单元,所以我认为有一种不同的方法可以在不传递单元参数的方法中实例化单元引用,所以我可以将字符串文本值分配给 UILabel。

【问题讨论】:

    标签: swift tableview cell xib nib


    【解决方案1】:

    cellForRow(at 返回基类UITableViewCell(错误清楚地告诉您),使用自定义单元格,您必须有条件地向下转换类型

    if let cell = tableView.cellForRow(at: indexPath) as? MyCustomCell { ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      相关资源
      最近更新 更多