`
jsntghf
  • 浏览: 2528519 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

上拉显示更多数据

    博客分类:
  • iOS
阅读更多

ViewController.h

 

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> {
    //表格数据数组
    NSMutableArray *tableData;
    //加载更多时显示的数据
    NSMutableArray *tableMoreData;
    //加载状态
    BOOL _loadingMore;
    
    UITableView *table;
}

@property (nonatomic, retain) UITableView *table;
@property (nonatomic, retain) NSMutableArray *tableData;
@property (nonatomic, retain) NSMutableArray *tableMoreData;

//创建表格底部
- (void) createTableFooter;
//开始加载数据
- (void) loadDataBegin;
//加载数据中
- (void) loadDataing;
//加载数据完毕
- (void) loadDataEnd;

@end

 

ViewController.m

 

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize table;
@synthesize tableData;
@synthesize tableMoreData;

- (void) viewDidLoad {
    [super viewDidLoad];
    table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStylePlain];
    table.delegate = self;
    table.dataSource = self;
    [self.view addSubview:table];
    
    tableData = [[NSMutableArray alloc] initWithObjects:
                 @"January", @"February", @"March", @"April", @"May", @"June", 
                 @"July", @"August", @"September", @"October", @"November", @"December", nil];
    tableMoreData = [[NSMutableArray alloc] initWithObjects:@"BAIDU", @"GOOGLE", @"FACEBOOK", @"YAHOO", nil];
    
    [self createTableFooter];
}

#pragma mark -
#pragma mark Table view data source

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [tableData count];
}

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
    
    return cell;
}

- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {    
    //到最底部时显示更多数据
    if(!_loadingMore && scrollView.contentOffset.y > ((scrollView.contentSize.height - scrollView.frame.size.height))) {
        [self loadDataBegin];
    }
}

//开始加载数据
- (void) loadDataBegin {
    if (_loadingMore == NO) {
        _loadingMore = YES;
        UIActivityIndicatorView *tableFooterActivityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(75.0f, 10.0f, 20.0f, 20.0f)];
        [tableFooterActivityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
        [tableFooterActivityIndicator startAnimating];
        [self.table.tableFooterView addSubview:tableFooterActivityIndicator];
        
        [self loadDataing];
    }
}

//加载数据中
- (void) loadDataing {
    for (int x = 0; x < [tableMoreData count]; x++) {
        [tableData addObject:[tableMoreData objectAtIndex:x]];
    }
    
    [[self table] reloadData];
    
    [self loadDataEnd];
}

//加载数据完毕
- (void) loadDataEnd {
    _loadingMore = NO;
    [self createTableFooter];
}

//创建表格底部
- (void) createTableFooter {
    self.table.tableFooterView = nil;
    UIView *tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.table.bounds.size.width, 40.0f)]; 
    UILabel *loadMoreText = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 116.0f, 40.0f)];
    [loadMoreText setCenter:tableFooterView.center];
    [loadMoreText setFont:[UIFont fontWithName:@"Helvetica Neue" size:14]];
    [loadMoreText setText:@"上拉显示更多数据"];
    [tableFooterView addSubview:loadMoreText];    
    
    self.table.tableFooterView = tableFooterView;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {

}

- (void)dealloc {
    [super dealloc];
}

@end
分享到:
评论

相关推荐

    Jquery实现手机端上拉滚动加载更多数据

    要实现“Jquery手机端上拉滚动加载更多数据”,我们需要以下几个关键步骤和组件: 1. **引入Jquery库**:压缩包中的`jquery-2.2.3.min.js`是Jquery的核心库,它是实现此类功能的基础。在`index.html`中,需要将这个...

    vue实现的上拉加载更多数据/分页功能示例

    在本示例中,主要介绍了如何利用Vue.js框架来实现一个上拉加载更多数据的分页功能。这一功能在前端开发中十分常见,主要用于在用户浏览网页时动态地从服务器获取更多数据,以提升用户体验。 首先,我们需要了解Vue....

    jQuery移动端下拉刷新、上拉加载更多插件

    2. **上拉加载更多**:当用户在页面底部向上拉动时,会触发加载更多数据的事件。这在处理无限滚动列表时非常有用,可以动态加载新的内容而无需用户点击加载按钮。 **三、使用步骤** 1. **引入依赖**:首先,在HTML...

    Gridview上拉加载更多动态商品数据

    当用户滚动到底部时,触发加载更多数据的逻辑。在`OnScrollListener`的`onScrollStateChanged()`或`onScroll()`方法中,我们可以判断当前是否到达底部。一种常见的方式是检查`GridView`的最后一个可见项的索引加上`...

    jquery 上拉加载更多

    在网页开发中,"jQuery 上拉加载更多"是一种常见的优化用户体验的技术,特别是在处理大量数据或内容的页面上,如新闻列表、社交媒体动态或电商产品展示等。这种技术允许用户滚动到页面底部时自动加载更多内容,而...

    下拉刷新与上拉加载更多SwipeRefreshLayout

    "下拉刷新与上拉加载更多SwipeRefreshLayout"是Android SDK提供的一种组件,用于实现这两种操作,为用户提供更加流畅的数据获取体验。本文将深入探讨这一组件的工作原理、使用方法及其扩展——...

    小程序swiper实现tab切换--下拉刷新、上拉加载更多.zip

    当用户滚动到页面底部时,此事件会被触发,开发者可以在事件处理函数中添加加载更多数据的逻辑。在加载完毕后,可以更新列表并提供适当的提示信息,例如“已加载全部”或“没有更多数据”。 6. **数据管理与渲染**...

    仿淘宝上拉加载更多

    在Android开发中,"仿淘宝上拉加载更多"是一种常见的滚动刷新效果,它通常用于电商平台或者信息流应用,用户在浏览到底部时可以自动或手动触发加载更多数据的功能。这个功能提高了用户体验,使得用户无需手动翻页...

    Jquery上拉滚动加载更多

    下面将详细介绍如何使用JQuery实现手机端的上拉滚动加载更多数据。 首先,我们需要理解滚动事件(scroll event)。在JQuery中,可以使用`$(window).on('scroll', function() {...})`来监听窗口的滚动事件。当用户...

    html5触屏手机端上下拉滑动加载更多数据

    "html5触屏手机端上下拉滑动加载更多数据"这个主题,正是讨论如何在网页中实现一种常见的滚动加载效果,即“无限滚动”或“上拉加载更多”。这种设计模式常用于新闻、社交网络和电商网站,当用户接近页面底部时,...

    列表上拉加载更多

    3. **监听滚动事件(Scroll Event Listening)**:在前端,我们需要监听用户的滚动行为,当检测到用户滚动到列表的底部时,触发加载更多数据的函数。这通常通过JavaScript实现,例如在React或Vue等框架中,可以使用...

    仿微信、QQ聊天界面, 加入了上拉加载更多,下拉刷新

    “上拉加载更多”功能是在用户滚动到列表底部时自动加载更多数据的机制。这种设计可以减少用户等待加载新内容的时间,提高用户体验。在ListView中实现这一功能,我们需要监听滚动事件,当达到底部时,向服务器请求更...

    自定义listview下拉刷新上拉加载更多以及与google官方的下拉刷新结合使用

    上拉加载更多则是在ListView底部向上滑动时,加载更多数据。这两个功能极大地提升了用户体验,尤其是在处理大量数据时。 自定义ListView下拉刷新通常包括以下几个步骤: 1. **创建头部布局**:下拉刷新的动画效果...

    RecyclerView搭配SwipeRefreshLayout和BaseQuickAdapter万能适配器实现下拉刷新和上拉加载更多

    - 要实现上拉加载更多,可以监听RecyclerView的滚动事件,当接近底部时加载更多数据。这通常需要自定义一个LinearLayoutManager,并实现其OnScrollListener。 5. **优化和扩展**: - 对于大列表,可以考虑使用...

    安卓上拉加载更多下拉刷新

    5. **数据处理**:在`onRefresh()`和加载更多数据的方法中,你需要处理数据获取、解析和更新UI的过程。通常这包括发起网络请求,解析JSON或XML数据,将新数据添加到适配器,然后调用`notifyDataSetChanged()`来更新...

    ListView GridView和ScrollView下拉刷新 上拉加载更多

    而LoadMoreListView则是在ListView底部添加一个加载指示器,当用户滑动到列表底部时,自动加载更多数据。 接着,GridView是二维列表视图,适用于显示多列元素,如图片墙。与ListView类似,它同样需要Adapter来填充...

    下拉刷新上拉加载更多demo

    上拉加载更多则通常出现在列表底部,当用户滚动到底部时,会触发加载更多数据的逻辑。 1. **监听滚动事件**:与下拉刷新不同,上拉加载更多的实现没有现成的官方组件。开发者通常需要监听列表的滚动事件,判断是否...

    vue移动端列表组件支持下拉刷新上拉加载更多

    1. `onLoadMore`:触发上拉加载更多时调用,向服务器请求更多数据,追加到`items`数组。 2. `load-more`组件:显示加载更多动画,`@load`事件监听加载更多操作完成。 七、实现细节 1. 通过计算属性或自定义指令处理...

    上拉加载更多

    "上拉加载更多"是一种常见的网页交互功能,它允许用户在滚动到页面底部时自动加载新的内容,无需点击单独的加载按钮。这种设计通常用于新闻 feed、社交媒体动态、电子商务产品列表等,提供无缝的浏览体验,使用户...

    微信小程序_上拉加载更多_demo

    在微信小程序中,"上拉加载更多"是一种常见的功能,用于实现滚动页面时自动加载更多数据,提高用户体验,尤其在内容丰富的列表或流式布局中应用广泛。 在微信小程序中实现上拉加载更多的功能,主要涉及到以下几个...

Global site tag (gtag.js) - Google Analytics