iOS中上拉加载下拉刷新之MJRefresh

摘要:
通常,刷新基于UIScrollView,因为可以拖放的视图通常继承自UIScrollView。2.#import“MJRefresh.h”可以直接加载到。m,然后进入。h文件:1#import<UIKit/UIKit。小时˃23@interfaceMyViewController:UIViewController<UITableViewDelegate,UITableViewDataSource>4{5CGRect_rect;//保存当前物理屏幕大小6}7@propertyUITableView*表视图;//现在的tableview8@propertyNSMutableArray*tableViewData;//表视图中的数组9@end.m在文件中:1#import“MyViewController.h”23#import“MJRefresh.h”45@interfaceMyViewController () 67@end89@implementationMyViewController10 initWithNibName:nibNameOrNilbundle:nibBundleOrNil11{12self=[supeitWithNibname:nibNameorNilbundel:nibBundle OrNil];13if{14_rect=[[UIScreenmainScreen]bound];15_tableViewData=[[NSMutableArrayalloc]init];16_tableView=[[UITableViewalloc]initWithFrame:CGRectMake];17}18returnself;19} 20 viewDidLoad{21[superviewDidLoad];22用于{23[_tableViewDataaddObject:[NSStringstringWithFormat:@“这是%d”,i+1]];24}25_ tableView。代表=自己;26_表格视图。dataSource=self;27[self.viewaddSubview:_tableView];28//启用刷新状态29[selfsetupRefresh];30}31//32开始刷新自定义方法33 setupRefresh34{35//下拉以刷新36[self.tableViewaddHeaderWithTarget:selection:@selectorateKey:@“table”];37[self.tableViewheaderBeginRefreshing];3839//2。向上拉以加载更多40[self.tableViewaddFooterWithTarget:selection:@selector];41//某些设置42//设置文本43self。tableView。headerPullToRefreshText=@“下拉刷新”;44自身。tableView。headerReleaseToRefreshText=@“立即释放并刷新”;45自身。tableView。headerRefreshingText=@“正在刷新。。。

1.导入到自己的工程中,如果是非ACR,则需要-fno-objc-arc,如果是arc就不用管了。

一般的刷新都是基于UIScrollView的,因为能拖拽的view一般都是继承于UIScrollView。

2.#import “MJRefresh.h”   这个可以直接加载.m中

然后.h文件中:

1 #import <UIKit/UIKit.h>
2  
3 @interface MyViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
4 {
5     CGRect _rect;//保存当前物理屏幕大小
6 }
7 @property (nonatomic,retain)UITableView *tableView;//当前的tableview
8 @property (nonatomic,retain)NSMutableArray *tableViewData;//tableview中数组数组
9 @end

.m文件中:

  1 #import "MyViewController.h"
  2  
  3 #import "MJRefresh.h"
  4  
  5 @interface MyViewController ()
  6  
  7 @end
  8  
  9 @implementation MyViewController
 10 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
 11 {
 12     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
 13     if(self){
 14         _rect = [[UIScreen mainScreen]bounds];
 15         _tableViewData = [[NSMutableArray alloc]init];
 16         _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, _rect.size.width, _rect.size.height)];
 17     }
 18     return self;
 19 }
 20 - (void)viewDidLoad {
 21     [super viewDidLoad];
 22     for (int i = 0 ; i < 5; i++) {
 23         [_tableViewData addObject:[NSString stringWithFormat:@"这是第%d条",i + 1]];
 24     }
 25     _tableView.delegate = self;
 26     _tableView.dataSource = self;
 27     [self.view addSubview:_tableView];
 28     //开启刷新状态
 29     [self setupRefresh];
 30 }
 31 //
 32 开始刷新自定义方法
 33 - (void)setupRefresh
 34 {
 35     //下拉刷新
 36     [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing) dateKey:@"table"];
 37     [self.tableView headerBeginRefreshing];
 38     
 39     // 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)
 40     [self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];
 41     //一些设置
 42     // 设置文字(也可以不设置,默认的文字在MJRefreshConst中修改)
 43     self.tableView.headerPullToRefreshText = @"下拉可以刷新了";
 44     self.tableView.headerReleaseToRefreshText = @"松开马上刷新了";
 45     self.tableView.headerRefreshingText = @"刷新中。。。";
 46     
 47     self.tableView.footerPullToRefreshText = @"上拉可以加载更多数据了";
 48     self.tableView.footerReleaseToRefreshText = @"松开马上加载更多数据了";
 49     self.tableView.footerRefreshingText = @"加载中。。。";
 50 }
 51 //下拉刷新
 52 - (void)headerRereshing
 53 {
 54     //一般这些个里边是网络请求,然后会有延迟,不会像现在刷新这么快
 55    // 1.添加假数据
 56         [self.tableViewData insertObject:@"这是刷新的数据" atIndex:0];
 57         [self.tableView reloadData];
 58         //2.结束刷新
 59         [self.tableView headerEndRefreshing];
 60 }
 61 //上拉加载
 62 - (void)footerRereshing
 63 {
 64     //这个一般是提取缓存的数据
 65     // 1.添加假数据
 66     [self.tableViewData insertObject:@"这是加载以前的数据" atIndex:[_tableViewData count]];
 67         [self.tableView reloadData];
 68         //2,结束刷新
 69         [self.tableView footerEndRefreshing];
 70 }
 71 //
 72  
 73 #pragma mark - tableView delegate
 74  
 75 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 76 {
 77     return 1;
 78 }
 79 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 80 {
 81     return [_tableViewData count];
 82 }
 83 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 84 {
 85     static NSString *cellID = @"cellID";
 86     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
 87     if(cell == nil){
 88         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
 89     }
 90     cell.textLabel.text = _tableViewData[indexPath.row];
 91     return cell;
 92 }
 93 //释放
 94 - (void)dealloc
 95 {
 96     [_tableView release];
 97     [_tableViewData release];
 98     [super dealloc];
 99 }
100 
101 如果在xcode6.0中有错误:
102 选中项目 - Project - Build Settings-Apple LLVM 6.0-Preprocessing中的Enable Strict Checking of objc_msgsend calls 设置为 NO 即可

PS:

1 //时间队列,规定时间执行某个事件  
2 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
3         // 刷新表格
4         [self.tableView reloadData];
5         
6         // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
7         [self.tableView headerEndRefreshing];
8     });

免责声明:文章转载自《iOS中上拉加载下拉刷新之MJRefresh》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇max_delay/min_delay和input_delay/output_delay什么是UE模型?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS UIKit:TableView之编辑模式(3)

一般table view有编辑模式和正常模式,当table view进入编辑模式时,会在row的左边显示编辑和重排控件,如图 42所示的编辑模式时的控件布局;左边的editing control有表 61的两种图标。 表 61 table view编辑控件 图标 描述 Deletion控件 Insertion控件 若ta...

IOS UITableView拖动排序功能

  UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序。   排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单元格,移动位置,进行手动排序。 使用系统自带拖动排序功能的步骤: 1、让tableView进入编辑状态,也就是设置它的editing为YES 2、...

iOS 数组越界 Crash处理经验

我们先来看看有可能会出现的数组越界Crash的地方; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { WelfareItem *item = [_datasourceArray objectAtIndex:in...

IOS 使用Autolayout实现UITableView的Cell动态布局和高度动态改变

如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并且能够保持平滑滚动的? 这个问题得到了300+的支持和450+的收藏,答案得到了730+的支持,很详细的说明了如何在iOS7和iOS8上实现UITableView的动态行高功能,并且这个答案对实现UICollectionView的动态行高也具有参考...

IOS学习:UITableView使用详解3 分组表的简单使用

IOS学习:UITableView使用详解3 分组表的简单使用 使用分组表和使用普通表的方法差不多,他们的不同点有以下几点: 1.分组表的属性必须设置为Grouped的,而不是plain 2.分组表的数据源方法当中numberOfSectionsInTableView:返回分组的个数。 3.可以设置tableView:titleForHeaderInSec...

iOS-高仿通讯录之商品索引排序搜索

概述 TableView添加右侧索引, 将数据按照索引分组排序, 并添加搜索功能且在搜索界面复用当前页面. 详细 代码下载:http://www.demodashi.com/demo/10696.html 项目中像一些商品搜索类界面, TableView添加右侧索引的使用越来越多, 的确用户体验提高了许多. 一、主要思路 大致思路: 1....