这是对iOS 数据源控制TableView,尽可能减少逻辑判断的优化, 也可以对其他数据在控制器中创建时简化大量代码.
新增ZWTableViewExampleEnum枚举类, 分别对应Cell上的UI展示数据:
enum ZWTableViewExampleEnum: String {
case classification = "分类"
case course = "我的课表"
case money = "我的余额"
case message = "消息"
case version = "当前版本"
case other = "其他"
// 根据枚举对属性进行赋值
var imgStr: String {
switch self {
case .classification:
return "fenlei"
case .course:
return "kebiao"
case .money:
return "qianbao"
case .message:
return "xiaoxi"
case .version:
return "lishi"
default:
return ""
}
}
var content: String {
switch self {
case .version:
return "1.2.1"
default:
return ""
}
}
var isMore: Bool {
switch self {
case .version:
return false
default:
return true
}
}
}
在ZWTableViewExampleModel新增枚举属性,并新增创建方法:
var type: ZWTableViewExampleEnum? // 增加枚举属性
/// 点击每行cell点击事件,传索引
var itemClick : ((_ indexPath: IndexPath) -> ())?
/// 利用枚举创建
class func initModel(type: ZWTableViewExampleEnum?) -> ZWTableViewExampleModel{
let item = ZWTableViewExampleModel()
item.type = type
return item
}
修改ZWTableViewExampleVC数据源创建方法:
let model0_0 = ZWTableViewExampleModel.initModel(type: .classification)
model0_0.itemClick = { indexPath in
print("点击了分类")
}
modelData = [
[model0_0]
]
修改ZWTableViewExampleCell的赋值方法:
var model: ZWTableViewExampleModel? {
didSet {
titleL.text = model?.type?.rawValue
contentL.text = model?.type?.content
imgV.image = UIImage.init(named: model?.type?.imgStr ?? "")
moreImgV.isHidden = !(model?.type?.isMore ?? true)
}
}