解决方案:
要创建一个通用的UITableViewCell,可以通过以下步骤实现:
class CustomTableViewCell: UITableViewCell {
var titleLabel: UILabel!
var subtitleLabel: UILabel!
var imageView: UIImageView!
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// 创建并配置标题标签
titleLabel = UILabel()
titleLabel.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(titleLabel)
// 创建并配置副标题标签
subtitleLabel = UILabel()
subtitleLabel.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subtitleLabel)
// 创建并配置图像视图
imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(imageView)
// 设置自动布局约束
NSLayoutConstraint.activate([
imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16),
imageView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor),
imageView.widthAnchor.constraint(equalToConstant: 40),
imageView.heightAnchor.constraint(equalToConstant: 40),
titleLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: 16),
titleLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 8),
titleLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
subtitleLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: 16),
subtitleLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 8),
subtitleLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
subtitleLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -8)
])
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomTableViewCell
// 根据indexPath获取对应的数据
let data = dataArray[indexPath.row]
// 根据数据类型设置不同的显示内容
if let textData = data as? String {
cell.titleLabel.text = textData
cell.subtitleLabel.text = nil
cell.imageView.image = nil
} else if let imageData = data as? UIImage {
cell.titleLabel.text = nil
cell.subtitleLabel.text = nil
cell.imageView.image = imageData
} else if let customData = data as? CustomDataModel {
cell.titleLabel.text = customData.title
cell.subtitleLabel.text = customData.subtitle
cell.imageView.image = customData.image
}
return cell
}
在上面的代码示例中,我们假设有一个名为dataArray的数据数组,其中包含了不同类型的数据。根据不同的数据类型,我们可以设置UITableViewCell的不同显示内容。
这样就可以创建一个通用的UITableViewCell类,用于显示不同类型的数据。根据数据类型的不同,可以设置不同的显示内容,以满足不同的需求。
上一篇:不同类型数据的基本问题
下一篇:不同类型图形绘制所需时间的差异