先放demo地址:github.com/KeWangKW/99…
-
swift-----KSTableVC【继承自KSViewController】
-
OC-----KOTableVC【继承自KOViewController】
-
从此,项目内所需要UITableView的页面, 都将继承自 KSTableVC 或 KOTableVC
-
pod 集成 MJRefresh 、DZNEmptyDataSet
1. VC使用示例:
-
- kw_initData 方法中:
- 空页面处理:
- emptyDataSetImage = UIImage(named: "ic_sxy_searchBG")
- emptyDataSetTitle = "列表为空"
- emptyDataSetDescription = "暂无数据"
- 刷新加载处理:默认不添加下拉刷新上拉加载功能
- isAddRefreshHeader = true //添加下拉刷新
- isAddRefreshFooter = true //添加上拉加载
- isAddRefreshFooter 设置后,需要注意必须设置页数 pagecount,否则由于pagecount默认值是1,导致其认为已全部加载完成
- 根据列表样式设置数据源:
- DataArr.append(Section0Arr)
- 固定了10个section数组,如果页面需要无数个分组、不固定分组,请自行根据返回数据设置数组,重写 kw_refreshData 和 kw_loadMoreData 方法,处理数组中的数据
- 设置UITableView.Style:默认plain
- style = .grouped
- 设置成group类型
- 注册cell:
- 注册普通cell
- tableView.kw_register(cell: TestTableVIewShowCell.self)
- 注册xib创建的cell
- tableView.kw_registerXib(cellXib: TestTableVIewShowCell.self)
- 其他或者实现,请查看 KSTableVC 中的 public extension UITableView 【OC:KOTableVC文件中的 UITableView (Category) 】
-
- kw_initUI 方法中:
- tableView.frame = CGRect(x: 0, y: KNavigationStatusHeight, width: KScreenWidth, height: KScreenHeight-KNavigationStatusHeight)
- tableView.backgroundColor = UIColor.red
- 可修改tableView的部分属性
-
- kw_requestData 数据请求中:
- 如果需要上拉加载的分页功能,需要设置总页数
pageCount = 3 - 一般情况下接口返回数据中都会给出当前页数和总页数,如果接口不返回总页数,需要进行如下设置
- 比如每次请求一页的数据为20条
- 当返回数据是小于20条时,表示已经到最后一页了,设置 pagecount = page 总页数等于当前页数
- 根据返回数据解析成model
-
- refreshCell 方法,随便自定义方法名,用来设置Data数组中的数据
- let item = TestTableVIewShowCellItem()
- item.cellModel = xxxx 设置cell中数据model
- item.str = string 设置自定义属性值
- DataArr[0].append(item) 添加到Data数组中
- 最后调用
kw_tableViewReloadData()方法刷新页面
2. cell使用示例:
- 定义KSTableCellItem 继承自NSObject,根据需要添加自定义属性
class TestTableVIewShowCellItem: KSTableCellItem {
var str:String = ""
override var cellHeight: CGFloat {
get{45} set{}
}
}
- str 为自定义的传值属性
- cellHeight 为当前cell高度,若不设置默认高度为0,cell高度为 UITableViewAutomaticDimension 自适应,需要在cell中通过使用AutoLayout或者Masnory、Snapkit 或在xib中 设置好子控件约束
class TestTableVIewShowCell: KSTableCell {
@IBOutlet weak var xibLab: UILabel!
override var item: KSTableCellItem!{
didSet{
let i = item as! TestTableVIewShowCellItem
xibLab.text = i.str
//let model = item.cellModel as! XXXModel
//xibLab.text = model.str
}
}
override func kw_setupViews() {
super.kw_setupViews()
self.backgroundColor = .cyan
}
override func kw_setupLayouts() {
super.kw_setupLayouts()
}
}
- item as! TestTableVIewShowCellItem 可获取到自定义item中的 自定义属性值
- item.cellModel as! XXXModel 获取model
3. DZNEmptyDataSet 处理:
- podfile文件中添加:pod 'DZNEmptyDataSet'
- 添加了一个 UIViewController 的拓展文件,实现DZNEmptyDataSet方法
- 不贴代码了,
DZNEmptyDataSet,请自行查看demo - 不止能在列表页使用,所有继承自UIViewController的类都能用,默认空图片、空标题、空描述 都为空
- 使用时设置以下属性即可
- emptyDataSetImage =
- emptyDataSetTitle =
- emptyDataSetDescription =
4. MJRefresh 处理:
- podfile文件中添加:pod 'MJRefresh'
- 在
MJRefresh文件中作了部分处理,定义了mj_header、mj_footer 的样式,可根据需要自行修改