枚举enum控制UI布局

2023-01-05  本文已影响0人  拖不垮打不烂

这是对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)
        }
    }
上一篇下一篇

猜你喜欢

热点阅读