UI12_刷新加載(17-08-18)

寫刷新加載,我用到的是第三方框架门扇,首先您可以到github下載MJRefresh框架,接下來(lái)看代碼。

//
//  EAHTTPCliecnt.h
//  HTTPClient
//
//  Created by Eiwodetianna on 2017/8/16.
//  Copyright ? 2017年 lanou. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^EASuccessBlock)(id reponseObject);
typedef void(^EAFailureBlock)(NSError *error);

@interface EAHTTPClient : NSObject

+ (void)GET:(NSString *)URLString parameters:(NSDictionary *)parameters success:(EASuccessBlock)success failure:(EAFailureBlock)failure;

+ (void)POST:(NSString *)URLString parameters:(NSDictionary *)parameters success:(EASuccessBlock)success failure:(EAFailureBlock)failure;

@end

//
//  EAHTTPCliecnt.m
//  HTTPClient
//
//  Created by Eiwodetianna on 2017/8/16.
//  Copyright ? 2017年 lanou. All rights reserved.
//

#import "EAHTTPClient.h"

typedef NS_ENUM(NSUInteger, EAHTTPMethod) {
    EAHTTPMethodGET,
    EAHTTPMethodPOST,
};

@interface EAHTTPClient ()

@end

@implementation EAHTTPClient

+ (void)GET:(NSString *)URLString parameters:(NSDictionary *)parameters success:(EASuccessBlock)success failure:(EAFailureBlock)failure {
    
    [self requestWithURLString:URLString parameters:parameters method:EAHTTPMethodGET success:success failure:failure];
    
}

+ (void)POST:(NSString *)URLString parameters:(NSDictionary *)parameters success:(EASuccessBlock)success failure:(EAFailureBlock)failure {
    
    [self requestWithURLString:URLString parameters:parameters method:EAHTTPMethodPOST success:success failure:failure];
}

+ (void)requestWithURLString:(NSString *)URLString parameters:(NSDictionary *)parameters method:(EAHTTPMethod)method success:(EASuccessBlock)success failure:(EAFailureBlock)failure { 
    
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    // 設(shè)置請(qǐng)求超時(shí)時(shí)間
    request.timeoutInterval = 60.f;
    
    NSMutableArray *parameterArray = [NSMutableArray array];
    for (NSString *key in parameters) {
        NSString *parameterString = [NSString stringWithFormat:@"%@=%@", key, parameters[key]];
        [parameterArray addObject:parameterString];
    }
    NSString *query = [parameterArray componentsJoinedByString:@"&"];
    
    switch (method) {
        case EAHTTPMethodGET:{
            request.HTTPMethod = @"GET";
            URLString = [URLString stringByAppendingFormat:@"?%@", query];
            break;
        }
        case EAHTTPMethodPOST: {
            request.HTTPMethod = @"POST";
            request.HTTPBody = [query dataUsingEncoding:NSUTF8StringEncoding];
            break;
        }
    }
    
    // 網(wǎng)絡(luò)請(qǐng)求時(shí)將URL轉(zhuǎn)變?yōu)楹戏ǜ袷?    URLString = [URLString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    NSURL *url = [NSURL URLWithString:URLString];
    request.URL = url;
    
    NSURLSession *session = [NSURLSession sharedSession];
    // 加載數(shù)據(jù)任務(wù)
    // 參數(shù)1:請(qǐng)求對(duì)象
    // 參數(shù)2:請(qǐng)求結(jié)束后回調(diào)函數(shù)
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 返回主線程
        dispatch_async(dispatch_get_main_queue(), ^{
            if (!error) {
                id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
//                id result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                success(result);
            } else {
                failure(error);
            }
            
        });
    }];
    // 執(zhí)行任務(wù)
    [dataTask resume];
}

@end

//
//  ViewController.m
//  UI12_刷新加載
//
//  Created by lanou3g on 17/8/18.
//  Copyright ? 2017年 lanou3g. All rights reserved.
//

#import "ViewController.h"
#import "MJRefresh.h" //主頭文件
#import "EAHTTPClient.h"
#import "Song.h"

@interface ViewController () <UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,retain) NSMutableArray *songArray;
@property (nonatomic,retain) UITableView *tableView;
@property (nonatomic,assign,getter=isRefresh) BOOL refresh;
@property (nonatomic,assign) NSInteger page;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.songArray = [NSMutableArray array];
    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:self.tableView];
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        
        NSLog(@"olivia");
        self.refresh = YES;
        self.page = 1;
        [self loadDataWithPage:self.page];
        //結(jié)束刷新
        [self.tableView.mj_header endRefreshing];
    }];
    //自動(dòng)刷新
    [self.tableView.mj_header beginRefreshing];
    self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
        NSLog(@"lee");
        self.refresh = NO;
//        [self.tableView.mj_footer endRefreshing];
        self.page++;
        [self loadDataWithPage:self.page];
    }];
}

- (void)loadDataWithPage:(NSInteger)pageNumber {
    NSString *URLString = @"http://172.18.26.201/get.php";
    NSDictionary *parameters = @{@"page":[NSString stringWithFormat:@"%ld",pageNumber]};
    
    //網(wǎng)絡(luò)請(qǐng)求
    [EAHTTPClient GET:URLString parameters:parameters success:^(id reponseObject) {
        
        if (self.isRefresh) {
            [self.songArray removeAllObjects];
            [self.tableView.mj_header endRefreshing];
        }else {
            [self.tableView.mj_footer endRefreshing];
        }
        
        for (NSDictionary *songDic in reponseObject) {
            Song *song = [[Song alloc] init];
            [song setValuesForKeysWithDictionary:songDic];
            [self.songArray addObject:song];
        }
        [self.tableView reloadData];
    } failure:^(NSError *error) {
        
    }];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.songArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    Song *song = self.songArray[indexPath.row];
    static NSString *cellId = @"cell";
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:cellId];
    if (nil == cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];
    }
    cell.textLabel.text = song.name;
    cell.detailTextLabel.text = song.singerName;
    return cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

//
//  Song.h
//  UI12_刷新加載
//
//  Created by lanou3g on 17/8/18.
//  Copyright ? 2017年 lanou3g. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Song : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *number;
@property (nonatomic, copy) NSString *pic;
@property (nonatomic, copy) NSString *singerName;
@property (nonatomic, copy) NSString *url;

@end

//
//  Song.m
//  UI12_刷新加載
//
//  Created by lanou3g on 17/8/18.
//  Copyright ? 2017年 lanou3g. All rights reserved.
//

#import "Song.h"

@implementation Song

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
    
}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嬉探,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棉圈,更是在濱河造成了極大的恐慌涩堤,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件分瘾,死亡現(xiàn)場(chǎng)離奇詭異胎围,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)德召,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門白魂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人上岗,你說(shuō)我怎么就攤上這事福荸。” “怎么了肴掷?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵敬锐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呆瞻,道長(zhǎng)台夺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任痴脾,我火速辦了婚禮颤介,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己买窟,他們只是感情好丰泊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著始绍,像睡著了一般瞳购。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亏推,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天学赛,我揣著相機(jī)與錄音,去河邊找鬼吞杭。 笑死盏浇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芽狗。 我是一名探鬼主播绢掰,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼童擎!你這毒婦竟也來(lái)了滴劲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤顾复,失蹤者是張志新(化名)和其女友劉穎班挖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芯砸,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萧芙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了假丧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双揪。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖包帚,靈堂內(nèi)的尸體忽然破棺而出渔期,到底是詐尸還是另有隱情,我是刑警寧澤婴噩,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布擎场,位于F島的核電站,受9級(jí)特大地震影響几莽,放射性物質(zhì)發(fā)生泄漏迅办。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一章蚣、第九天 我趴在偏房一處隱蔽的房頂上張望站欺。 院中可真熱鬧姨夹,春花似錦、人聲如沸矾策。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贾虽。三九已至逃糟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蓬豁,已是汗流浹背绰咽。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留地粪,地道東北人取募。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蟆技,于是被迫代替她去往敵國(guó)和親玩敏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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