`
beike
  • 浏览: 362813 次
社区版块
存档分类
最新评论

[ZT]UITableView下拉刷新页面的实现

 
阅读更多

UITableView下拉刷新页面的实现

 

以前看到facebook,人人和其他的一些应用,很多都使用了下拉列表,列表就重新加载数据的应用.感觉用户体验很好,但是一直没有时间找相应的解决方法,今天终于有时间整理一下代码:

下图是实现的效果图,当用户下拉列表的时候,就出现向上的箭头.

image image

实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh

实现过程很简单,下载相应的demo,然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.在table所在的类中添加如下代码:

#import <UIKit/UIKit.h> 
#import "EGORefreshTableHeaderView.h" 
@interface iphone_navtaViewController : UIViewController 
<UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>{ 
    BOOL isflage; 
    IBOutlet UITableView *myTableView; 
   EGORefreshTableHeaderView *_refreshHeaderView; 
    BOOL _reloading; 

@property (nonatomic,retain) UITableView *myTableView; 
- (void)reloadTableViewDataSource; 
- (void)doneLoadingTableViewData; 
@end

 

实现方法:

#import "iphone_navtaViewController.h" 
@implementation iphone_navtaViewController 
@synthesize myTableView; 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if (_refreshHeaderView == nil) { 
        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)]; 
        view1.delegate = self; 
        [self.myTableView addSubview:view1]; 
        _refreshHeaderView = view1; 
        [view1 release]; 
    } 
    [_refreshHeaderView refreshLastUpdatedDate]; 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 

- (void)viewDidUnload { 
    self.myTableView=nil; 
    _refreshHeaderView=nil; 

- (void)dealloc { 
    _refreshHeaderView=nil; 
    [self.myTableView release]; 
    [super dealloc]; 

#pragma mark – 
#pragma mark onClick 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

      isflage=!isflage; 
    [super.navigationController setNavigationBarHidden:isflage animated:TRUE]; 
    [super.navigationController setToolbarHidden:isflage animated:TRUE]; 

#pragma mark – 
#pragma mark UITableView 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 3; 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"]; 
    if (cell==nil) { 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                       reuseIdentifier:@"tag"] autorelease]; 
    } 
    //表格设计 
    return cell; 

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

    return 100; 
}

#pragma mark – 
#pragma mark Data Source Loading / Reloading Methods

- (void)reloadTableViewDataSource{ 
    NSLog(@"==开始加载数据"); 
    _reloading = YES; 
}

- (void)doneLoadingTableViewData{ 
    NSLog(@"===加载完数据"); 
    _reloading = NO; 
    [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];

#pragma mark – 
#pragma mark UIScrollViewDelegate Methods 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{    
    [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView]; 
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 
    [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView]; 

#pragma mark – 
#pragma mark EGORefreshTableHeaderDelegate Methods 
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{ 
    [self reloadTableViewDataSource]; 
    [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0]; 
}

- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{ 
    return _reloading; 

- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{ 
    return [NSDate date];     

@end

 

 

一个最重要的步骤,就是要添加QuartzCore.framework组建。

然后运行即可。

分享到:
评论

相关推荐

    UITableView 下拉刷新demo

    本示例"UITableView 下拉刷新demo"旨在教你如何在你的iOS应用中实现这个功能。 首先,下拉刷新功能通常依赖于UIRefreshControl类,这是苹果提供的一个内置控件,可以轻松地添加到UITableView中。创建...

    UITableView的下拉刷新

    总之,通过UIRefreshControl和自定义的上拉加载逻辑,你可以为UITableView实现下拉刷新和上拉加载更多功能,提升应用的交互体验。同时,第三方库如XQRefresh则提供了更多便利和定制选项。在实际开发中,根据项目需求...

    UITableView 下拉刷新EGOTableViewPullRefresh

    `UITableView`的下拉刷新功能通常通过第三方库来实现,其中`EGOTableViewPullRefresh`是一个广泛使用的开源库。下面将详细讲解如何使用`EGOTableViewPullRefresh`库来为`UITableView`添加下拉刷新功能。 首先,`...

    UITableView下拉刷新案例.zip

    这个"UITableView下拉刷新案例.zip"应该包含了一个实际的iOS项目示例,演示了如何在UITableView中实现下拉刷新。 首先,下拉刷新的核心是UIRefreshControl对象,它是iOS SDK内置的专门用于处理下拉刷新操作的控件。...

    IOS下拉刷新Demo实现

    首先,EGOTableViewPullRefresh是由Egor Gorin开发的一个轻量级库,专门用于在UITableView上实现下拉刷新。它提供了易于使用的接口和自定义的刷新指示器视图,帮助开发者快速集成这一功能。 1. **集成...

    iOS 下拉刷新

    这个压缩包提供的Demo正是为了帮助开发者理解和实现iOS中的下拉刷新效果。 在iOS中,下拉刷新主要通过UIRefreshControl类来实现。UIRefreshControl是苹果官方提供的一个控件,它可以轻松地添加到UITableView或...

    UITableView下拉-上拉刷新

    在“UITableView下拉-上拉刷新”这个主题中,我们主要讨论如何在UITableView中实现下拉刷新和上拉加载更多的功能,以及在加载过程中添加额外的用户体验元素。 1. **下拉刷新**: - 下拉刷新(Pull-to-Refresh)是...

    UITableView下拉刷新

    本教程将聚焦于如何利用第三方库实现`UITableView`的下拉刷新功能。 一、下拉刷新简介 下拉刷新(Pull-to-Refresh)是一种常见的移动应用交互设计,用户通过在屏幕上向下拉动视图来触发刷新操作。这种功能通常被...

    ios下拉刷新uitableview

    本篇文章将深入探讨如何在iOS的`UITableView`中实现下拉刷新。 首先,`UITableView`本身并不直接支持下拉刷新功能,但可以通过第三方库如`EGOTableViewPullRefresh`来实现。`EGOTableViewPullRefresh`是一个轻量级...

    ios下拉刷新功能实现

    本文将深入探讨如何在iOS平台上实现下拉刷新功能。 一、下拉刷新原理 下拉刷新的基本原理是监听用户对UITableView或UICollectionView的滑动操作。当用户向上拉动视图到一定程度时,会触发一个回调,开发者在这个回...

    仿QQ下拉刷新

    【仿QQ下拉刷新】是一种常见的移动应用交互设计,它让用户在顶部下拉时触发页面内容的刷新。这种设计在QQ等社交应用中被广泛采用,后来成为了许多Android和iOS应用的标准特性。实现这一功能主要涉及到滚动视图、动画...

    下拉刷新的实现

    本篇文章将深入探讨下拉刷新的实现原理,以及如何在实际项目中应用这一技术。 首先,我们需要理解下拉刷新的基本工作流程。当用户在界面上下拉到列表底部时,会触发一个事件,这个事件通常被称为“刷新请求”。随后...

    webview的下拉刷新

    "webview的下拉刷新"是指在用户下拉Webview时,触发页面的重新加载,类似于UITableView的下拉刷新功能。这个特性提供了用户体验上的便利,让用户能够轻松获取到最新更新的内容。 在iOS中,有两种主要类型的Webview...

    下拉刷新的demo

    在iOS中,下拉刷新功能通常通过UITableView的扩展API实现,即UIRefreshControl类。以下是一般的实现步骤: 1. 创建UIRefreshControl对象:首先在你的UIViewController或UITableViewController中创建一个...

    UITableView上拉刷新、下拉刷新

    总之,为UITableView实现上拉刷新和下拉刷新是iOS开发中的常见任务,通过UIRefreshControl和自定义滚动代理方法可以轻松实现。使用第三方库则可以进一步提升用户体验,提供更个性化的交互设计。在实践中,确保正确...

    IOS中UITableview实现上拉和下拉刷新

    在iOS中,我们可以利用UIRefreshControl来实现下拉刷新功能。UIRefreshControl是一个内置的控件,可以轻松添加到UITableView中。首先,我们需要创建一个UIRefreshControl实例,并将其添加为UITableView的子视图。...

    uiscrollview uitableview上拉刷新

    本教程将详细讲解如何在 `UIScrollView`(尤其是 `UITableView`)中实现上拉和下拉刷新功能。 一、`UIScrollView` 基础 `UIScrollView` 是一个可以容纳大型内容并允许用户滚动查看的视图。它通过内容大小(content...

    swift UICollectionView, UITableView 上拉/下拉刷新 修改

    在Swift中,实现UITableView或UICollectionView的上拉加载更多和下拉刷新功能,主要涉及到以下几个关键知识点: 1. **下拉刷新**:下拉刷新通常用来更新表格的初始数据。在Swift中,可以使用UIRefreshControl类来...

    各种下拉刷新Demo

    只需将它添加到`UITableView`或`UICollectionView`上,即可实现下拉刷新。设置`UIRefreshControl`的`attributedTitle`可以自定义文字提示,而调用`beginRefreshing`和`endRefreshing`方法来控制刷新状态。 4. **...

Global site tag (gtag.js) - Google Analytics