EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
来源:互联网 发布:幼师怎么样知乎 编辑:程序博客网 时间:2024/06/06 14:29
以前看到facebook,人人和其他的一些应用,很多都使用了下拉列表,列表就重新加载数据的应用.感觉用户体验很好,但是一直没有时间找相应的解决方法,今天终于有时间整理一下代码:
下图是实现的效果图,当用户下拉列表的时候,就出现向上的箭头.
实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh
实现过程很简单,下载相应的demo,然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.在table所在的类中添加如下代码:
01
#import <UIKit/UIKit.h>
02
#import "EGORefreshTableHeaderView.h"
03
<a href=
"http://my.oschina.net/interface"
class
=
"referer"
target=
"_blank"
>@interface</a> iphone_navtaViewController : UIViewController
04
<UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>{
05
BOOL
isflage;
06
IBOutlet UITableView *myTableView;
07
EGORefreshTableHeaderView *_refreshHeaderView;
08
BOOL
_reloading;
09
}
10
@property (nonatomic,retain) UITableView *myTableView;
11
- (
void
)reloadTableViewDataSource;
12
- (
void
)doneLoadingTableViewData;
13
@end
实现方法:
01
#import "iphone_navtaViewController.h"
02
@implementation iphone_navtaViewController
03
@synthesize myTableView;
04
- (
void
)viewDidLoad {
05
[super viewDidLoad];
06
if
(_refreshHeaderView == nil) {
07
EGORefreshTableHeaderView *view1 = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 10.0f – self.myTableView.bounds.size.height, self.myTableView.frame.size.width, self.view.bounds.size.height)];
08
view1.delegate = self;
09
[self.myTableView addSubview:view1];
10
_refreshHeaderView = view1;
11
[view1 release];
12
}
13
[_refreshHeaderView refreshLastUpdatedDate];
14
}
15
- (
BOOL
)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
16
return
(interfaceOrientation == UIInterfaceOrientationPortrait);
17
}
18
- (
void
)didReceiveMemoryWarning {
19
[super didReceiveMemoryWarning];
20
}
21
- (
void
)viewDidUnload {
22
self.myTableView=nil;
23
_refreshHeaderView=nil;
24
}
25
- (
void
)dealloc {
26
_refreshHeaderView=nil;
27
[self.myTableView release];
28
[super dealloc];
29
}
30
#pragma mark –
31
#pragma mark onClick
32
-(
void
)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
33
{
34
isflage=!isflage;
35
[super.navigationController setNavigationBarHidden:isflage animated:TRUE];
36
[super.navigationController setToolbarHidden:isflage animated:TRUE];
37
}
38
#pragma mark –
39
#pragma mark UITableView
40
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
41
return
1;
42
}
43
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
44
return
3;
45
}
46
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
47
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@
"tag"
];
48
if
(cell==nil) {
49
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
50
reuseIdentifier:@
"tag"
] autorelease];
51
}
52
//表格设计
53
return
cell;
54
}
55
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
56
{
57
return
100;
58
}
59
60
#pragma mark –
61
#pragma mark Data Source Loading / Reloading Methods
62
63
- (
void
)reloadTableViewDataSource{
64
NSLog(@
"==开始加载数据"
);
65
_reloading = YES;
66
}
67
68
- (
void
)doneLoadingTableViewData{
69
NSLog(@
"===加载完数据"
);
70
_reloading = NO;
71
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];
72
}
73
#pragma mark –
74
#pragma mark UIScrollViewDelegate Methods
75
- (
void
)scrollViewDidScroll:(UIScrollView *)scrollView{
76
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
77
}
78
79
- (
void
)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(
BOOL
)decelerate{
80
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
81
}
82
#pragma mark –
83
#pragma mark EGORefreshTableHeaderDelegate Methods
84
- (
void
)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
85
[self reloadTableViewDataSource];
86
[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
87
}
88
89
- (
BOOL
)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{
90
return
_reloading;
91
}
92
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
93
return
[NSDate date];
94
}
95
@end
一个最重要的步骤,就是要添加QuartzCore.framework组建。
然后运行即可。
文章出处:http://wangjun.easymorse.com/?p=1193
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现 .
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- UITableView下拉刷新页面的实现
- 实现下拉更新UITableView EGORefreshTableHeaderView
- 实现下拉更新UITableView EGORefreshTableHeaderView
- 实现下拉更新UITableView EGORefreshTableHeaderView
- 实现下拉更新UITableView EGORefreshTableHeaderView
- UITableView 添加 下拉刷新(EGORefreshTableHeaderView)
- 三极管饱和,放大,截止电压判断
- 对vector等STL标准容器进行排序操作
- acm每日一练之一种排序
- IOCP 浅析
- 5天学会jaxws-webservice编程第四天
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- TCP头分析+面试题
- webdav
- 黑马程序员——java第二十五天:正则表达式
- php中各种包含
- 模版的特化与偏特化
- PonyDebugger 简易教程
- 选择工作
- HTML那点事之【路径的相对与绝对】