MJRefresh在UITableView中的使用

前言

MJRefresh是一個(gè)好用的上下拉刷新的控件,github地址如下:https://github.com/CoderMJLee/MJRefresh 很多app都使用這個(gè)控件嫁赏,我們也來(lái)了解一下它的用法岗憋。下面主要是介紹在UITableView下的使用腮鞍。

MJRefresh.png

使用

在github上下載之后屑咳,將MJRefresh文件添加到項(xiàng)目中判耕,并且在需要使用的文件上引入MJRefresh.h跛梗。然后在該文件的viewDidLoad方法中指定tableView的header和footer寻馏,如下:

#import "MJRefreshTableViewController.h"
#import "MJRefresh.h"

@interface MJRefreshTableViewController ()
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end

@implementation MJRefreshTableViewController

- (void)viewDidLoad {
[super viewDidLoad];

__weak typeof(self) weakSelf = self;
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    //刷新時(shí)候,需要執(zhí)行的代碼茄袖。一般是請(qǐng)求最新數(shù)據(jù)操软,請(qǐng)求成功之后,刷新列表
    [weakSelf loadNewData];
}];

self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
    //刷新時(shí)候宪祥,需要執(zhí)行的代碼聂薪。一般是請(qǐng)求更多數(shù)據(jù),請(qǐng)求成功之后蝗羊,刷新列表
    [weakSelf loadMoreData];
}];
}

/**
 請(qǐng)求獲取最新的數(shù)據(jù)
 */
- (void)loadNewData {
NSLog(@"請(qǐng)求獲取最新的數(shù)據(jù)");

//這里假設(shè)2秒之后獲取到了最新的數(shù)據(jù)藏澳,刷新tableview,并且結(jié)束刷新控件的刷新?tīng)顟B(tài)
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    //刷新列表
    [weakSelf.tableView reloadData];
    //拿到當(dāng)前的刷新控件耀找,結(jié)束刷新?tīng)顟B(tài)
    [weakSelf.tableView.mj_header endRefreshing];
});
}


/**
 請(qǐng)求獲取更多的數(shù)據(jù)
 */
- (void)loadMoreData {
NSLog(@"請(qǐng)求獲取更多的數(shù)據(jù)");

//這里假設(shè)2秒之后獲取到了更多的數(shù)據(jù)翔悠,刷新tableview业崖,并且結(jié)束刷新控件的刷新?tīng)顟B(tài)
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    //刷新列表
    [weakSelf.tableView reloadData];
    //拿到當(dāng)前的刷新控件,結(jié)束刷新?tīng)顟B(tài)
    [weakSelf.tableView.mj_footer endRefreshing];
});
}
@end

按照app的實(shí)際情況來(lái)說(shuō)蓄愁,loadMoreData 和 loadNewData方法應(yīng)該是發(fā)送數(shù)據(jù)請(qǐng)求双炕,而結(jié)束刷新控件的刷新?tīng)顟B(tài)應(yīng)該是在請(qǐng)求失敗或者請(qǐng)求成功的方法中調(diào)用。

如果是帶動(dòng)圖的刷新控件的話撮抓,就直接替換在viewDidLoad中的寫(xiě)法即可妇斤。

- (void)viewDidLoad {
[super viewDidLoad];

__weak typeof(self) weakSelf = self;
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];

[header setImages:idleImages forState:MJRefreshStateIdle];
[header setImages:pullingImages forState:MJRefreshStatePulling];
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];

self.tableView.mj_header = header;
}

其中idleImages,pullingImages丹拯,refreshingImages是圖片數(shù)組站超,分別對(duì)應(yīng)普通閑置狀態(tài),松開(kāi)就可以進(jìn)行刷新的狀態(tài)乖酬,正在刷新中的狀態(tài)等的圖片死相。注意,idleImages等圖片數(shù)組存儲(chǔ)的對(duì)象是UIImage咬像。

如果只設(shè)置了refreshingImages算撮,只要在刷新?tīng)顟B(tài)下顯示圖片,其他狀態(tài)不顯示圖片施掏。如果設(shè)置了idleImages或者pullingImages其中之一钮惠,所有狀態(tài)下都顯示設(shè)置的圖片。
同理七芭,設(shè)置底部帶動(dòng)畫(huà)效果的footer:

- (void)viewDidLoad {
[super viewDidLoad];

MJRefreshBackGifFooter *footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(endRefreshing)];

[footer setImages:idleImages forState:MJRefreshStateIdle];
[footer setImages:pullingImages forState:MJRefreshStatePulling];
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];

self.tableView.mj_footer = footer;
}

PO一張效果圖:


下拉刷新.png
header.stateLabel.hidden = YES;
header.lastUpdatedTimeLabel.hidden = YES;

如果隱藏右邊狀態(tài)或者更新時(shí)間其中一行文字素挽,則顯示的一行文字會(huì)垂直居中,效果如下:


隱藏更新時(shí)間.png

如果把右邊的兩行文字都隱藏了狸驳,只顯示圖片预明,則圖片居中,效果如下:


隱藏文字.png

如果覺(jué)得動(dòng)畫(huà)頻率過(guò)快或者過(guò)低耙箍,可以修改MJRefresh以下位置撰糠。


Paste_Image.png

使用以下方法還可以修改顯示文字

[header setTitle:@"下拉刷新" forState:MJRefreshStateIdle];
[header setTitle:@"釋放開(kāi)始刷新哦~" forState:MJRefreshStatePulling];
[header setTitle:@"正在快馬加鞭地刷新著呢" forState:MJRefreshStateRefreshing];

其他控件的用法

UICollectionView 和UIScrollView的用法與UITableView的用法一致,只需將上面所說(shuō)的tableView.mj_header 改成 collectionView.mj_header 和 scrollView.mj_header 即可辩昆。例如:

self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    //刷新時(shí)候阅酪,需要執(zhí)行的代碼。一般是請(qǐng)求最新數(shù)據(jù)汁针,請(qǐng)求成功之后术辐,刷新列表
    [weakSelf loadNewData];
}];

self.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    //刷新時(shí)候,需要執(zhí)行的代碼施无。一般是請(qǐng)求最新數(shù)據(jù)辉词,請(qǐng)求成功之后,刷新列表
    [weakSelf loadNewData];
}];

又因UIWebView 自帶一個(gè)UIScrollView的屬性猾骡,所以UIWebView也可以使用MJRefresh瑞躺,用法如下:

self.webView.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    //刷新時(shí)候敷搪,需要執(zhí)行的代碼。一般是請(qǐng)求最新數(shù)據(jù)幢哨,請(qǐng)求成功之后赡勘,刷新列表
    [weakSelf loadNewData];
}];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘱么,隨后出現(xiàn)的幾起案子狮含,更是在濱河造成了極大的恐慌,老刑警劉巖曼振,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔚龙,居然都是意外死亡冰评,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門木羹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)甲雅,“玉大人,你說(shuō)我怎么就攤上這事坑填∨兹耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵脐瑰,是天一觀的道長(zhǎng)妖枚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)苍在,這世上最難降的妖魔是什么绝页? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮寂恬,結(jié)果婚禮上续誉,老公的妹妹穿的比我還像新娘。我一直安慰自己初肉,他們只是感情好酷鸦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著牙咏,像睡著了一般臼隔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上眠寿,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天躬翁,我揣著相機(jī)與錄音,去河邊找鬼盯拱。 笑死盒发,一個(gè)胖子當(dāng)著我的面吹牛例嘱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宁舰,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拼卵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛮艰?” 一聲冷哼從身側(cè)響起腋腮,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎壤蚜,沒(méi)想到半個(gè)月后即寡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袜刷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年聪富,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著蟹。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墩蔓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萧豆,到底是詐尸還是另有隱情奸披,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布涮雷,位于F島的核電站阵面,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏份殿。R本人自食惡果不足惜膜钓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卿嘲。 院中可真熱鬧颂斜,春花似錦、人聲如沸拾枣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梅肤。三九已至司蔬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姨蝴,已是汗流浹背俊啼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留左医,地道東北人授帕。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓同木,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親跛十。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彤路,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,081評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件芥映、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,095評(píng)論 4 62
  • 30多歲的我洲尊,回顧往昔歲月,覺(jué)得浪費(fèi)了很多時(shí)間奈偏。特別是自卑的時(shí)候坞嘀,常常浪費(fèi)大把時(shí)間去為無(wú)法改變的事情而感傷...
    讓生命更璀璨閱讀 7,364評(píng)論 6 5
  • 致這顆日漸蒼老的心: 一直自詡我還是個(gè)青春美少女姆吭,至少是個(gè)年輕的少女,看年紀(jì)唁盏,93年的阿姨,不過(guò)的確處在人生最...
    夢(mèng)游娃娃愛(ài)旅行閱讀 436評(píng)論 0 1
  • 姓名:王波 日精進(jìn)打卡第13天 【打卡始于2017.10.14持續(xù)于2017.10.26】 ...
    SKY_db17閱讀 109評(píng)論 0 0