Skip to content

集成MJRefresh和UIScrollView+EmptyDataSet 用最少的代码处理刷新和空白页面

Notifications You must be signed in to change notification settings

coder-dongjiayi/UIScrollView-TDScrollView

Repository files navigation

用最简单的方式处理下拉刷新和空白页面处理

依赖

  • MJRefresh
  • DZNEmptyDataSet

为什么会使用UISCrollView-TDScrollView

  • 如果给一个scrollview添加下拉刷新你可能会这样写

    
    self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    
    }];
    
    self.collectionView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
    
    }];
    
  • 当你需要显示空白页面的时候你也许会这样写

        if(list.count == 0){
           empty.hidden = false
        }else{
          empty.hidden = true
        }
    

我认为工程中大量如此的代码,不够美观,不够优雅,所以我觉得应该有更好的实现方式

如何使用

  1. 设置 tableView或者collectionView的delegate

    tableView.tdDelegate = self
    
  2. 实现 TDScrollviewDelegate协议 如果需求只需要下拉刷新那么只需要实现 tdClientBeginRefresh 如果只需要上拉加载更多那么只需要实现tdClientLoadMoreRefresh

    extension HomeParttimeListView:TDScrollviewDelegate{
        func tdClientBeginRefresh() {
          page = 1
        }
        func tdClientLoadMoreRefresh() {
          page = page + 1
        }
    }
  3. 刷新数据(无需关心此时是下拉刷新还是上拉加载更多 请直接调用 td_reload()方法)

     if page == 1 {
                dataSource = source
        }else{
                dataSource.append(contentsOf: source)
       }
    tableView.td_reload(source.count)

解释

  1. td_reload这个方法传入一个count 如果 count=0 那么认为就没有下一页数据了,就会显示没有更多数据

  2. 为什么没有使用gitHub上的 UIScrollView+EmptyDataSet ?因为这个库有bug,我改了下源码 所以如果你的工程里使用了 DZNEmptyDataSet 你可以删除你工程的,使用我这里面的 完全兼容。

  3. 为什么没有制作成pod集成?因为每家公司的下拉刷新显示的空白页面或者默认文案都不一样,你可以把这份代码放到你自己的工程里,根据你公司产品的要求 进行定制。

About

集成MJRefresh和UIScrollView+EmptyDataSet 用最少的代码处理刷新和空白页面

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published