NicooTableListViewController 0.1.5

NicooTableListViewController 0.1.5

Maintained by YangXin.



 
Depends on:
MJRefresh~> 3.1.0
SnapKit~> 4.0
 

  • By
  • yangxina

NicooTableListViewController

CI Status Version License Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

自带编辑,头部,尾部刷新的tableList (swift4.+)

首先,很多时候我们需要用到像购物车那样的编辑,全选,单选,反选,删除功能等,很多时候我们的tableView需要做分页,而且项目中有很多复用的页面(或页面比较相似的),如果在VC中加枚举,会使得VC过于臃肿,之前遇到这种情况都用的继承来实现多个页面,但是后来做组件化,发现继承这玩意儿在抽组件的时候,必须要给它去掉,不然解不了耦合。没有办法,最后用Demo中的方式实现了解耦。 Demo中组要的实现原理是: 1.在一个带tableView的VC中,将tableView的代理都再代理一层出去,外部实现自定义的代理来实现页面复用。包括头部,尾部刷新,请求失败,点击页面重新请求等操作,都是通过代理实现,需要编辑,删除,全选单选的地方,也只需要实现代理就能包含该工能。

#使用:

  1. 懒加载基类VC,在ViewDidLoad() 中添加到自己的VC上。 private lazy var baseListVC: NicooTableListViewController = { let vc = NicooTableListViewController() vc.delegate = self return vc }()

view.addSubview(baseListVC.view) layoutPageSubviews()

  1. 选择性实现以下代理方法:

(1) /// 是否有头部刷新控件, func haveHeaderRefreshView() -> Bool

(2) /// 是否有底部刷新控件 func haveFooterRefreshView() -> Bool

(3) /// tableView头部刷新 func headerRefreshing(_ tableView: UITableView)

(4) /// tableView加载更多页数据 func loadMoreData(_ tableView: UITableView)

-----------------------------------------------------《《 以上4个是实现分页的列表代理 》》

(5) /// 数据请求失败后重新请求数据调用 func requestDataAgain()

-----------------------------------------------------《《 请求失败后,点击失败页面再次请求的代理 》》

(6) /// 自定义rowCount(必须实现的方法) func listTableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

(7) /// 自定义cell类 func cellClass(for listBaseViewController: NicooTableListViewController) -> AnyClass?

(8) /// 自定义cell高度 func cellHeight(for listBaseViewController: NicooTableListViewController) -> CGFloat?

(9) /// 自定义cell func listTableView(_ listBaseViewController: NicooTableListViewController, tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell?

(10) /// 自定义的cell的配置方法,操作Model,数据等 func configCell(_ tableView: UITableView, for cell: UITableViewCell, cellForRowAt indexPath: IndexPath)

(11) /// 自定义点击事件 func listTableView(_ tableView: UITableView, didSelectedAtIndexPath indexPath: IndexPath)

(12) /// 自定义反选代理事件 func listTableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)

(13) /// 自定义编辑状态下的点击事件 func editingListTableView(_ tableView: UITableView, didSelectedAtIndexPath indexPath: IndexPath, didSelected indexPaths: [IndexPath]?)

(14) /// 自定义编辑状态下反选代理事件 func editingListTableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath, didSelected indexPaths: [IndexPath]?)

(15) /// 全选之后的回调 func editingListTableView(_ tableView: UITableView, allSelectedRowAt indexPaths: [IndexPath]?)

(16) /// 自定义编辑状态下选中图标颜色 func editingSelectedViewColor() -> UIColor

(17) /// 列表根据需要显示统计 func shouldShowStatics(_ listBaseViewController: NicooTableListViewController) -> Bool

-----------------------------------------------------《《 tableView 的代理,其中 (13). (14). (15) 是在做编辑全选的时候的回调代理 ,(16)是编辑选中的按钮的自定义颜色 , (17) 是tableView列表的数据条数统计 》》

具体大伙儿可以看Demo,Demo实现了几乎所有代理 目前只有需求只想到这么多,如果有好的建议可以发送至作者邮箱: [email protected]

Installation

NicooTableListViewController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'NicooTableListViewController'

Author

[email protected], [email protected]

License

NicooTableListViewController is available under the MIT license. See the LICENSE file for more info.