本身手寫代碼實現下拉刷新(對於小項目第三方庫太佔資源)

須要包裝viewController視圖  async

viewController.m代碼所有粘貼便可使用atom

//spa

//  ViewController.m.net

//  練習 刷新數據orm

//get

//  Created by qianfeng on 16/2/24.string

//  Copyright © 2016 mc. All rights reserved.it

//  QQ 937496430io

#define SCR_W self.view.frame.size.widthtable

#define SCR_H self.view.frame.size.height

#import "ViewController.h"


@interface ViewController () <UITableViewDataSource,UITableViewDelegate>


@property (nonatomic ,strong)UITableView * tableView;

@property (nonatomic,retain)NSMutableArray *dataArray;

@property (nonatomic)NSInteger currentPage; //當前頁數

@property (nonatomic)NSInteger refreshState; //0初始狀態 //1已經上拉 須要鬆手 //2正在獲取數據狀態


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    [self loadData];

    [self createTable];



}

- (void)loadData

{

    if(_dataArray == nil)

    {

        _dataArray = [[NSMutableArray alloc] init];

    }

    

    for (int index = 0; index < 20; index++) {

        NSString *str = [NSString stringWithFormat:@"%ld頁第%dCell",_currentPage,index];

        [_dataArray addObject:str];

    }

    _currentPage++;

    

    dispatch_async(dispatch_get_main_queue(), ^{

        [_tableView reloadData];

        _refreshState = 0;

        [self updateRefreshView];

    });

}


- (void)createTable

{

    _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCR_W, SCR_H)];

    [self.view addSubview:_tableView];

    _tableView.tableFooterView = [self createFooterView];

    self.tableView.delegate = self;

    self.tableView.dataSource = self;

}


// 建立footer視圖  返回UIView

- (UIView*)createFooterView

{

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)];

    [view setBackgroundColor:[UIColor whiteColor]];

    

    UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)];

    [lable setTextAlignment:NSTextAlignmentCenter];

    [lable setText:@"上拉刷新"];

    [lable setTextColor:[UIColor darkGrayColor]];

    lable.tag = 100;

    [view addSubview:lable];

    

    return view;

}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return 50;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return _dataArray.count;

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELL_ID"];

    if(cell == nil){

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELL_ID"];

    }

    cell.backgroundColor = [UIColor grayColor];

    cell.textLabel.text =  _dataArray[indexPath.row];

    

    return cell;

}


//刷新數據

- (void)updateRefreshView

{

    UIView *refreshV = _tableView.tableFooterView;

    UILabel *titleL = (UILabel*)[refreshV viewWithTag:100];

    

    if(_refreshState == 0)

    {

        [titleL setText:@"上拉刷新數據"];

        

    }else if(_refreshState == 1){

        [titleL setText:@"鬆手即刷新數據"];

        

    }else if(_refreshState == 2){

        [titleL setText:@"正在下載數據..."];

        

    }

}


- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    if ((_refreshState == 0)&&(scrollView.contentOffset.y + _tableView.frame.size.height > scrollView.contentSize.height + 50)) {

        //scrollView.contentSize.height 50 是爲了防止滑動過快 致使刷新

        

        _refreshState = 1;

        [self updateRefreshView];

        

    }

}


//滾動視圖已經結束拖動

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    if(_refreshState == 1)

    {

        _refreshState = 2;

        [self updateRefreshView];

        

        [self performSelector:@selector(loadData) withObject:nil afterDelay:3]; //延遲3 爲了更直觀的顯示 _refreshState 的狀態

        // [self loadData];

    }

}





- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end

相關文章
相關標籤/搜索