美文网首页
OC 控件 MJRefresh的使用

OC 控件 MJRefresh的使用

作者: 冯汉栩 | 来源:发表于2021-07-30 09:45 被阅读0次

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

稍微简单的记录一下MJRefresh的使用,其实网上有好几篇文章都写的比较好多的,有空我会按照他们的文章去用一下,完善一下。

MJRefresh简单使用
MJRefresh超详细讲解
# MJRefresh-简单使用

# MJRefresh超详细讲解

下面的代码是自己一般开发中会用到的,起码自己用过,心里面比较踏实。

下.gif

下拉刷新

MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    [self.viewModel getUserCenter];
}];
[header setTitle:@"加载数据完成" forState:MJRefreshStateNoMoreData];
[header setTitle:@"正在加载数据" forState:MJRefreshStateRefreshing];
[header setTitle:@"刷新完毕" forState:MJRefreshStatePulling];
header.lastUpdatedTimeLabel.hidden = YES;
self.collectionView.mj_header = header;
//写在成功失败请求数据回来
[subVC.tableview.mj_header endRefreshing];
上.gif

上拉加载更多

@property (nonatomic,assign) NSInteger page;
@property (nonatomic,strong) MJRefreshAutoNormalFooter *footer;

- (NSInteger)page{
    if (_page == 0) {
        _page = 1;
    }
    return _page;
}

    self.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
    [self.footer setTitle:@"已显示全部内容" forState:MJRefreshStateNoMoreData];
    self.tableview.mj_footer = self.footer;

#pragma  mark 上拉加载更多
-(void)loadMoreData{
    if (self.viewModel.guessModel.like_goods_list.count >= self.viewModel.guessModel.like_goods_qty) {
        [self.collectionView.mj_footer endRefreshing];
        self.tableview.mj_footer.hidden = YES;
        return;
    }
    self.page += 1;
    [self.viewModel getMoreHomeGuessPage:self.page];
}

#pragma  mark 专用上拉加载更多代理
- (void)HomeViewModel:(HomeViewModel *)view successGuessModel:(HomeGuessBaseModel *)model{
    
    [self.collectionView.mj_footer endRefreshing];
    [self.collectionView reloadData];
}


//有些公司的接口没有返回总数和页数总是的可以这么写
@property (nonatomic,assign) NSInteger page;
@property (nonatomic,strong) MJRefreshAutoNormalFooter *footer;

- (NSInteger)page{
    if (_page == 0) { _page = 1; }
    return _page;
}

self.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
self.tableview.mj_footer = self.footer;

#pragma  mark 上拉加载更多
-(void)loadMoreData{
    self.page += 1;
    [self.viewModel getMoreReplysWithCid:self.cid withPage:self.page withPageSize:0 withOrderby:[NSString new] withSort:[NSString new]];
}

#pragma mark - viewModelDelegate - failMore
-(void)commentListViewModel:(CommentListViewModel *)viewModel failMore:(NSString *)value{   
    self.tableview.mj_footer = self.footer;
    [self.tableview.mj_footer endRefreshing];
    [self.tableview.mj_footer endRefreshingWithNoMoreData];
    [self.tableview reloadData];
}

其实写这篇文章的一个主要目的就是为了当上拉加载全部数据的时候怎么显示 已显示全部数据之类的提示。
首先在在启动的时候设置

[self.footer setTitle:@"已显示全部内容" forState:MJRefreshStateNoMoreData];

然后当上拉加载更多的数据回来发现没有数据的时候代理出来控制器之后执行下面的这句话

 [self.tableview.mj_footer endRefreshingWithNoMoreData];

相关文章

网友评论

      本文标题:OC 控件 MJRefresh的使用

      本文链接:https://www.haomeiwen.com/subject/egjfvltx.html