正在为tableView中的自定义表单元格UILabels设置值(:didSelectRowAt)



我有一个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文件中的自定义表单元格。它有一个按钮和两个UILabels。我为按钮和占据单元格左手边的UILabel做了所有工作。然而,当在具有自定义单元格的视图控制器中的didSelectRowAt中使用时,在第一个视图控制器中以上述方法工作的行:

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

似乎不允许我使用以下内容:

cell.foreignWord.text=拆分[1]

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

我得到错误:

UITabelViewCell没有成员"foreignWord"。

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

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

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

最新更新