MJRefresh的那些坑

2024-06-18 21:58
文章标签 mjrefresh

本文主要是介绍MJRefresh的那些坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在正在写一个新的项目,由于之前用过MJ所以感觉这个第三方库还是相当简便的。可是真正用最新的MJ的时候才发现竟然也有坑。
1.MJ最新的库竟然跟一年多以前的风格完全不同了,之前用的MJ还是调用performselelctor实现的header和footer两个方法大致是这个样子的。
[myTable addHeaderWithTarget:self action:@selector(headerRereshing)];
[myTable addFooterWithTarget:self action:@selector(footerRereshing)];
2.而现在竟然最新的方法是Block,万恶的Block啊,虽然Block处理代码块很方便但是也正是这个Block带来了更大的坑。Block设置header和footer的方法如下
//头部刷新
self.myTable.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
}];
// 马上进入刷新状态
[self.myTable.header beginRefreshing];
//底部刷新
self.myTable.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
}];
3.既然说到了block的坑,那得说明,否则会招到大家的口诛笔伐,其实也不算是大坑了,只是在请求的时候发现一个问题,就是为什么上下拉刷新的操作都是在主线程中的呢?
当我们把请求放入block中执行回调的时候就会发现我们的界面完全卡死,知道数据请求结束。之前一直找不到问题所在,原来是请求的问题。所以在此将请求和MJ的用法给大家分享下。处理后的代码如下
self.hotTableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
//开启异步线程请求数据
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 进入刷新状态后会自动调用这个block
currentPage =0;
self.hotTableView.footer.hidden=NO;
NSDictionary *requestInfo =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:currentPage],@”pageNo”,@”10”,@”pageSize”,userIdStr,@”userId”, nil];
[[requestHelper defaultHelper]requestForType:myList info:requestInfo target:self successSel:@”requstSuccessWithResult:” failedSel:@”reuqestFailedWithError:” rebackTasks:@”requestTaskForCancel:”];
});
}];
如果有补充的地方,各位大神帮忙分享下。

这篇关于MJRefresh的那些坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073169

相关文章

iOS MJRefresh的用法

Contents 常见API MJRefreshComponent.hMJRefreshHeader.hMJRefreshFooter.hMJRefreshAutoFooter.hExamples Reference【参考】下拉刷新01-默认下拉刷新02-动画图片下拉刷新03-隐藏时间下拉刷新04-隐藏状态和时间下拉刷新05-自定义文字下拉刷新06-自定义刷新控件上拉刷新01-默认上拉刷

iOS之MJRefresh下拉刷新和上啦加载更多实例

#define SIZEOFPAGE 15 static NSString *identifier=@"imitateRecordCell"; @interface LYImitateRecordListVC ()<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,strong)NSMutableA

iOS开发中MJRefresh在swift项目中的简单使用

背景: 在swift工程中要使用一个刷新控件,网上的建议还是直接使用MJRefresh,于是就在swift工程中导入了MJRefresh,并进行了使用。 具体使用: (使用cocoaPods将MJRefresh继承到项目中,MJRefresh虽然是OC版本的,但确能在swift项目中直接使用并不用进行桥接) 为UITableView添加刷新、加载的视图 2.刷新、加载的方法 本

IOS-8-Xcode6 使用MJRefresh报错:Too many arguments to function call, expected 0, have 3

版权声明:本文为博主原创文章,未经博主允许不得转载。 1.报错问题:将XCode升级到6后,报Too many arguments to function call, expected 0, have *,在XCode5.1里能编译通过的,到xcode6就报错 objc_msgSend(self.beginRefreshingTaget, self.beginRefreshingA

超赞的MJRefresh 的实现

MJRefresh An easy way to use pull-to-refresh 用法最简单的下拉刷新框架:一行代码搞定 Contents Getting Started Features【支持哪些控件的刷新】 Installation【如何使用MJRefresh】 Who’s using【已经超过上百个App正在使用MJRefresh】 Classes【MJRefresh

ios MJRefresh 上拉死循环刷新问题

解决方法:把 self.tableView.estimatedRowHeight=150.0f;11 150这个数值是你cell的平均高度,如果estimatedRowHeight设置非常小,MJRefresh的KVO会监听错误的contentoffset,造成不停进行上拉加载操作。 上面的原因只说了一半,需要把代码调整下: 将代码顺序执行顺序调整 //

OC-抖音上拉加载(你以为单纯用MJRefresh就能实现?那你就错了)

先上DEMO记得star哦 效果图   之前实现了抖音下拉刷新效果之后就没再继续研究,想着上拉加载随便集成一下MJRefresh就可以了,很简单嘛,等需要的时候再加进去就好了。 直到某一天有个小伙伴跟我说添加上拉加载有问题,我就不信了,怎么可能呢,自己试了试还真是不少坑。 现在想来之前真的是图样图森破,你以为你以为的就是你以为的?实践出真知,万事都不能想当然,只有自己真的去操作了才能明

IOS开发(11)IOS MJRefresh 控件demo

这个控件真的挺好用的,对于我来说,前期能回使用就够了,项目已经满足要求了。使用这个控件首先导入这个库的相关内容 MJRefresh下载地址 https://github.com/CoderMJLee/MJRefresh MJRefresh截图: 项目截图: 项目中添加代码,运行即可 //// ViewController.m// 02-上拉加载下拉刷新//// C