- 浏览: 2542651 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
以前,写了一篇文章:下拉刷新的实现,只讲到了下拉刷新的功能,这篇文章描述了下拉刷新以及上拉加载更多的功能。
这里只列出核心功能的代码,其他的代码请参考附件。
DemoTableViewController.h
#import <UIKit/UIKit.h> #import "STableViewController.h" @interface DemoTableViewController : STableViewController { NSMutableArray *items; } @end
DemoTableViewController.m
#import "DemoTableViewController.h" #import "DemoTableHeaderView.h" #import "DemoTableFooterView.h" @interface DemoTableViewController () - (void) addItemsOnTop; - (void) addItemsOnBottom; - (NSString *) createRandomValue; @end @implementation DemoTableViewController - (void) viewDidLoad { [super viewDidLoad]; self.title = @"STableViewController Demo"; [self.tableView setBackgroundColor:[UIColor lightGrayColor]]; NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DemoTableHeaderView" owner:self options:nil]; DemoTableHeaderView *headerView = (DemoTableHeaderView *)[nib objectAtIndex:0]; self.headerView = headerView; nib = [[NSBundle mainBundle] loadNibNamed:@"DemoTableFooterView" owner:self options:nil]; DemoTableFooterView *footerView = (DemoTableFooterView *)[nib objectAtIndex:0]; self.footerView = footerView; items = [[NSMutableArray alloc] init]; for (int i = 0; i < 10; i++) [items addObject:[self createRandomValue]]; } #pragma mark - Pull to Refresh - (void) pinHeaderView { [super pinHeaderView]; DemoTableHeaderView *hv = (DemoTableHeaderView *)self.headerView; [hv.activityIndicator startAnimating]; hv.title.text = @"Loading..."; } - (void) unpinHeaderView { [super unpinHeaderView]; [[(DemoTableHeaderView *)self.headerView activityIndicator] stopAnimating]; } - (void) headerViewDidScroll:(BOOL)willRefreshOnRelease scrollView:(UIScrollView *)scrollView { DemoTableHeaderView *hv = (DemoTableHeaderView *)self.headerView; if (willRefreshOnRelease) hv.title.text = @"Release to refresh..."; else hv.title.text = @"Pull down to refresh..."; } - (BOOL) refresh { if (![super refresh]) return NO; [self performSelector:@selector(addItemsOnTop) withObject:nil afterDelay:2.0]; return YES; } #pragma mark - Load More - (void) willBeginLoadingMore { DemoTableFooterView *fv = (DemoTableFooterView *)self.footerView; [fv.activityIndicator startAnimating]; } - (void) loadMoreCompleted { [super loadMoreCompleted]; DemoTableFooterView *fv = (DemoTableFooterView *)self.footerView; [fv.activityIndicator stopAnimating]; if (!self.canLoadMore) { fv.infoLabel.hidden = NO; } } - (BOOL) loadMore { if (![super loadMore]) return NO; [self performSelector:@selector(addItemsOnBottom) withObject:nil afterDelay:2.0]; return YES; } #pragma mark - Dummy data methods - (void) addItemsOnTop { for (int i = 0; i < 3; i++) [items insertObject:[self createRandomValue] atIndex:0]; [self.tableView reloadData]; [self refreshCompleted]; } - (void) addItemsOnBottom { for (int i = 0; i < 5; i++) [items addObject:[self createRandomValue]]; [self.tableView reloadData]; if (items.count > 50) self.canLoadMore = NO; else self.canLoadMore = YES; [self loadMoreCompleted]; } - (NSString *) createRandomValue { NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; return [NSString stringWithFormat:@"%@ %@", [dateFormatter stringFromDate:[NSDate date]], [NSNumber numberWithInt:rand()]]; } #pragma mark - Standard TableView delegates - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return items.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 = [items objectAtIndex:indexPath.row]; return cell; } @end
- Demo.zip (26.6 KB)
- 下载次数: 281
评论
2 楼
wwwang89
2013-04-07
楼主,你的demo里面 的代码跟博客里面的不一样,群殴确信你上传错位了,,是你前一篇博客 的demo,请楼主在重新上传一次,O(∩_∩)O谢谢
1 楼
nyh1006
2013-03-23
最好加上注释!
发表评论
-
Error watching file for changes: EMFILE
2016-12-15 11:57 1309执行npm start后报错: Error watc ... -
CocoaPods升级1.1.1报错
2016-12-15 08:39 799ERROR: While executing gem .. ... -
Visual Studio Code运行React Native报错
2016-06-13 09:43 1620React Native:0.27.2 React:15 ... -
React Native 0.27.2编译报错this._nativeModule.addListener is not a function
2016-06-12 15:21 3866React Native:0.27.2 React:15 ... -
Unable to resolve module ReactDefaultPerf from
2016-06-02 13:04 2790package.json信息如下: "reac ... -
React Native 0.26.2编译报错Undefined symbols for architecture x86_64
2016-05-26 11:15 2029React Native:0.26.2 React:15. ... -
Failed to update auto layout status: Failed to load designables from path (null)
2016-04-05 22:11 1722确保CocoaPods是0.36.1以上版本,然后在podf ... -
集成微信支付出现Undefined symbols for architecture x86_64错误
2016-03-21 13:22 1755Undefined symbols for architec ... -
React Native热部署之CodePush
2016-01-10 22:27 6253本文使用的环境是Mac OS 10.11.1、Xcode ... -
浅谈React Native中的FlexBox布局
2015-11-17 18:38 4310React Native通过一个基于FlexBox的布局引 ... -
React Native之构建一个简单的列表页
2015-10-23 14:45 2169本文中我们将创建一个简单的电影应用,这个应用将从Rotten ... -
React Native之环境搭建
2015-10-20 16:30 1450本文使用的环境是Mac O ... -
获取图片属性的方法
2015-10-18 20:43 3149很多时候我们需要获 ... -
NSCache的下标用法
2015-09-18 00:19 1219NSCache类和NSDictionary类很相似,也提供 ... -
如何给category添加属性
2015-08-16 10:41 694主要是使用了runtime中的associative机制。 ... -
UITableView的两种重用Cell方法的区别
2015-08-10 13:07 16160UITableView中有两种重用Cell的方法: - ... -
SDImageCache.m报错Unused variable 'fileName'
2015-08-04 21:56 1179GCC手册中的相关解释: unused:This att ... -
Swift调用Objective-C
2015-07-13 23:33 1232Swift调用Objective-C需要一个名为<工程 ... -
使用GCD实现倒计时
2015-07-24 21:47 1090__block int timeout = 60; // ... -
导航栏加分割线的实现
2015-07-01 22:00 1772self.view.backgroundColor = [U ...
相关推荐
在Android应用开发中,用户界面的交互体验是至关重要的,其中下拉刷新和上拉加载更多功能已经成为现代移动应用的标准特性。"下拉刷新与上拉加载更多SwipeRefreshLayout"是Android SDK提供的一种组件,用于实现这两种...
在移动设备上,为了优化用户体验,许多网页应用都采用了下拉刷新(Pull-to-Refresh)和上拉加载更多(Infinite Scroll)的功能。jQuery作为一款广泛使用的JavaScript库,提供了丰富的插件来支持这些特性。本篇文章将...
在Android应用开发中,下拉刷新和上拉加载更多功能是常见的UI交互设计,用于提升用户体验,让用户能够方便地获取最新或更多的数据。本篇将详细介绍一个专为Android设计的下拉刷新和上拉加载框架——Android-...
在Android开发中,ListView是常用的数据展示控件,但原生的ListView并不支持下拉刷新和上拉加载更多的功能。为了实现这些高级特性,开发者通常需要进行自定义或者使用第三方库。本教程将探讨如何自定义ListView实现...
通过以上步骤,我们可以构建一个功能完备的小程序,提供丰富的交互体验,包括平滑的tab切换、实时的下拉刷新以及方便的上拉加载更多功能。在实际开发中,还需要根据具体业务需求进行定制和优化,确保小程序在性能和...
而下拉刷新和上拉加载更多的功能则为用户提供了更友好的交互体验,使得用户可以轻松获取更多内容,尤其是在数据流无限或者数量庞大的情况下。本文将详细讲解如何在这些控件中实现这两种功能。 一、下拉刷新 1. ...
在移动应用开发中,"下拉刷新,上拉加载更多"是常见的交互设计模式,尤其在列表或数据流展示中非常普遍。这个功能允许用户通过简单的手势更新内容(下拉刷新)或者查看更多的数据(上拉加载更多)。下面将详细探讨这...
在Android应用开发中,下拉刷新和上拉加载是提高用户体验的重要特性,它们使得用户能够方便地获取更多数据而无需离开当前界面。本篇将详细讲解如何使用Android Studio实现这三种不同的下拉刷新和上拉加载功能:...
总的来说,实现QML下的下拉刷新和上拉加载更多功能,需要结合`ListView`的事件监听、自定义组件、边界检测、数据模型操作以及异步网络请求等技术。通过`CCListViewDemo`这样的示例,开发者可以学习到如何在QT QML...
综上,自定义ListView的下拉刷新和上拉加载更多功能,以及使用Google的SwipeRefreshLayout,都是Android开发中提升用户体验的重要手段。通过理解其工作原理和实践技巧,我们可以创建更高效、友好的应用界面。
总结起来,实现Material风格下的RecyclerView下拉刷新和上拉加载更多,主要涉及SwipeRefreshLayout和LoadMoreWrapper的使用,以及在Adapter中处理数据加载逻辑。通过这种方式,我们可以创建一个响应式、动态的列表,...
"仿糗事百科侧滑、下拉刷新、上拉加载更多"这个项目是针对移动应用开发中的常见功能进行的模仿与实现,主要涉及到三个方面:侧滑菜单、下拉刷新以及上拉加载更多。这些功能在许多社交、资讯类应用中被广泛使用,为...
在Android应用开发中,"下拉刷新"和"上拉加载更多"是常见的用户体验功能,尤其是在数据列表场景中,如新闻、社交媒体或者电商应用。这两个功能使得用户可以方便地获取新内容或者查看历史数据,无需离开当前页面。...
在微信小程序开发中,"下拉刷新"和"上拉加载更多"是常见的滚动操作功能,它们极大地提升了用户体验,使得用户能便捷地获取更多数据。本文将深入探讨这两个功能的实现原理、步骤以及相关的文件配置。 一、下拉刷新...
下面将详细解释如何将这三个组件结合起来实现下拉刷新和上拉加载更多的功能。 1. **RecyclerView**: RecyclerView是Android Lollipop引入的替代ListView的新组件。相比于ListView,RecyclerView提供了更好的性能...
基于 Android 的 BGARefreshLayout 下拉刷新与上拉加载更多组件 项目简介 BGARefreshLayout 是一个基于 Android 平台的下拉刷新与上拉加载更多组件。它支持多种下拉刷新效果和上拉加载更多效果,并且允许开发者...
内容概要:uniapp实现下拉刷新及上拉加载更多的完整代码(app,H5,小程序均可使用),下载后解压,使用HBuilder导入项目即可运行。 适合人群:少许编程基础人员即可. 适应场景:需要使用uniapp开发移动端时,涉及...
Vue 实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解) Vue.js 是一个流行的前端框架,越来越多的开发者选择使用 Vue.js 来构建复杂的 Web 应用程序。本文将详细介绍如何使用 Vue.js 实现网络图片瀑布流 +...