我创建了一个自定义单元格,该自定义单元格的文件是 .xib 文件(称为 MessageCell.xib)。 .xib 文件与 .swift 文件关联,我可以在其中输入代码,并且在该文件中我有一些 IBOutlet 属性。我想要做的是使用 UIListContentConfiguration 设置这些属性,但我不知道如何执行或是否可以设置。下图中我已经为 iOS 14 及更高版本实现了这一点,对于旧版本我遵循传统方式。为旧版本编写的代码没有任何问题,但我为 iOS 14 编写的代码不起作用/出现错误。
这是我特制的细胞。
class MessageCell: UITableViewCell {
@IBOutlet weak var rightImageView: UIImageView!
@IBOutlet weak var leftImageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var messageBubble: UIView!
override func awakeFromNib() {
super.awakeFromNib()
messageBubble.layer.cornerRadius = messageBubble.frame.height / 5
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
在这里,我将消息数组中的字符串表达式分配给单元格中的标签属性。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: K.cellIdentifier, for: indexPath) as! MessageCell
if #available(iOS 14.0, *)
{
var config = cell.defaultContentConfiguration()
config.text = messages[indexPath.row].body
cell.contentConfiguration = config
}
cell.label.text = messages[indexPath.row].body
return cell
}
我通过反复试验实现了该结构的许多功能,但我无法实现我的目标。
您不能为此使用 UIListContentConfiguration,因为您尝试在单元格中配置的界面元素不是内置的图像和标题视图。您必须编写自定义的 UIContentConfiguration 和 UIContentView,通过自己配置相应的界面元素来在代码中响应配置的属性设置。