赞
踩
1.实现功能:实现下拉刷新 上拉加载(系统SDK提供不够全面)
2.实现原理:通过EGOTableViewPullReFresh的代理方法方法
(void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView {
[self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f]; }(void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView {
[self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f]; }`
#pragma mark - Refresh and load more methods
(void) refreshTable {
/*Code to actually refresh goes here.
*/
self.pullTableView.pullLastRefreshDate = [NSDate date];
self.pullTableView.pullTableIsRefreshing = NO; }(void) loadMoreDataToTable {
/*Code to actually load more data goes here.
*/
self.pullTableView.pullTableIsLoadingMore = NO; }
来刷新和加载数据
导入包EGORefreshTableViewPullRefresh
用xib文件画一个tableview 把Class更改为pulltableview
连接tableview的datasource协议 和pulltableview的delegate并且连接到viewController中
在ViewController中
在.h文件中定义一个全局变量(在Xcode6.3中自动为Arc 所以这个变量用__weak修饰)
#import <UIKit/UIKit.h>
#import "PullTableView.h"
@interface MainViewController : UIViewController<UITableViewDataSource,PullTableViewDelegate>
{
__weak PullTableView *pullTableView;
}
@property (weak, nonatomic) IBOutlet PullTableView *pullTableView;
@end
在.m文件中实现代理方法和datasource方法
#pragma mark- UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 10;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text = [NSString stringWithFormat:@"Row %li", (long)indexPath.row];
return cell;
}
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"Section %li begins here!", (long)section];
}
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"Section %li ends here!", (long)section];
}
#pragma mark - PullTableViewDelegate
- (void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView
{
[self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f];
}
- (void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView
{
[self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f];
}
#pragma mark - Refresh and load more methods
- (void) refreshTable
{
/*
Code to actually refresh goes here.
*/
self.pullTableView.pullLastRefreshDate = [NSDate date];
self.pullTableView.pullTableIsRefreshing = NO;
}
- (void) loadMoreDataToTable
{
/*
Code to actually load more data goes here.
*/
self.pullTableView.pullTableIsLoadingMore = NO;
}
当然我们可以自定义刷新和加载的图标和文字
修改刷新和加载的图标和文字
- (void)viewDidLoad {
[super viewDidLoad];
self.pullTableView.pullArrowImage = [UIImage imageNamed:@"blackArrow"];
self.pullTableView.pullBackgroundColor = [UIColor purpleColor];
self.pullTableView.pullTextColor = [UIColor blackColor];
}
默认是英文的显示内容 我们可以在框架中的
_statusLabel.text = NSLocalizedStringFromTable(@"Release to refresh...",@"PullTableViewLan", @"Release to refresh status");
中修改成我们想要的文字
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。