IOS MJRefresh给tableview下拉刷新上拉加载分页

这篇博客介绍了如何在iOS应用中利用MJRefresh库为UITableView实现下拉刷新和上拉加载分页功能。通过`setupRefresh`方法设置刷新控件,`footerRefreshing`处理上拉加载事件,`controlEventValueChanged:`响应用户操作,以及`refreshData`方法更新数据。文章还提及使用AFNetworking进行网络请求以获取新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • (void)viewDidLoad

{

[super viewDidLoad];

//获取数据

[self firstLoadRefresData];

//下拉刷新

self.refreshControl = [[UIRefreshControl alloc]init];

self.refreshControl.tintColor=[UIColor blueColor];

[self.refreshControl addTarget:self action:@selector(controlEventValueChanged:) forControlEvents:UIControlEventValueChanged];

// 集成上拉加载控件

[self setupRefresh];

}

/**

  • 集成刷新控件

    */

    • (void)setupRefresh

{

[self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];

self.tableView.footerPullToRefreshText = @"上拉加载更多数据";

self.tableView.footerReleaseToRefreshText = @"松开加载更多数据";

self.tableView.footerRefreshingText = @"正在帮你加载中.....";

}

  • (void)footerRereshing

{

// 1.添加假数据

if ([self.docs hasNextPage]) {

    [self setData:[[self.docs page]intValue]+1];

}

// 2.2秒后刷新表格UI

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

    // 刷新表格

    [self.tableView reloadData];

    // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态

    [self.tableView footerEndRefreshing];

});

}

-(void)controlEventValueChanged:(id)sender{

if (self.refreshControl.refreshing) {

    self.refreshControl.attributedTitle=[[NSAttributedString alloc]initWithString:@"刷新中"];

    [self performSelector:@selector(refreshData) withObject:nil afterDelay:0.5];

}

}

-(void)refreshData{

//请求数据

[self firstLoadRefresData];

//刷新表格

[self.tableView reloadData];

//完成刷新

[self.refreshControl endRefreshing];

self.refreshControl.attributedTitle=[[NSAttributedString alloc]initWithString:@"下拉刷新"];

}

使用AFNetworking库,取得数据。
-(void)setData:(int) p {

NSString *string = [NSString stringWithFormat:@"%@p=%d&ps=10", BaseURLString,p];

NSURL *url = [NSURL URLWithString:string];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

operation.responseSerializer = [AFJSONResponseSerializer serializer];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    self.docs=(NSMutableDictionary *)responseObject;

    NSMutableArray *doclist=[[NSMutableArray alloc]initWithCapacity:10];

    [doclist addObjectsFromArray:self.infos];

    [doclist addObjectsFromArray:[self.docs info]];

    self.infos=doclist;

    [self.tableView reloadData];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"

                                                        message:[error localizedDescription]

                                                       delegate:nil

                                              cancelButtonTitle:@"Ok"

                                              otherButtonTitles:nil];

    [alertView show];

}];

[operation start];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值