在 tableView(:didSelectRowAt) 中设置自定义 table 单元格 UILabel 的值

Setting values for custom table cell UILabels in tableView(:didSelectRowAt)

我有这个方法用于 UIViewController 基础 class,它使用 Table 具有动态原型和 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 文件中的自定义 table 单元格。它有一个按钮和 2 个 UILabel。我让按钮和占据单元格左手边的 UILabel 的一切正常工作。但是,当在具有自定义单元格的视图控制器中的 didSelectRowAt 中使用时,在第一个视图控制器中的上述方法中起作用的行:

if let cell = tableView.cellForRow(at: indexPath)

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

cell.foreignWord.text = 拆分[1]

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

我收到错误:

UITabelViewCell 没有成员'foreignWord'。

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

cellForRow(at returns base class UITableViewCell (错误清楚地告诉你),对于自定义单元格,你必须有条件地向下转换类型

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