第十二章:表视图常用UI范例——下拉刷新+无限滚动
来源:互联网 发布:cip数据查询 编辑:程序博客网 时间:2024/05/06 09:23
1.使用UIRefreshControl实现下拉刷新
//声明下拉刷新 self.refreshControl = [[UIRefreshControl alloc] init]; //赋予动作执行 [self.refreshControl addTarget:self action:@selector(refreshedByPullingTable:) forControlEvents:UIControlEventValueChanged];
//使用UIRefreshControl实现下拉刷新- (void) refreshedByPullingTable:(id)sender{ //开始执行 [self.refreshControl beginRefreshing]; //模拟延迟, double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ //下拉刷新结束 [self.refreshControl endRefreshing]; });}
2.无限滚动
首先需要引用:EgoRefreshTableHeaderView,PullToRefreshViewController
.h 文件:注意继承父类
#import <UIKit/UIKit.h>#import "PullToRefreshViewController.h"//必须继承@interface ViewController : PullToRefreshViewController@end
.m文件:
#import "ViewController.h"@interface ViewController ()@property (assign,nonatomic) int pageCount;@end@implementation ViewController@synthesize pageCount = _pageCount;- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. //现在拥有几个片段 self.numberOfSections = 1; //标示现在是第几页 self.pageCount = 1; //标题 self.title = NSLocalizedString(@"Infinite Scrolling", @""); //设置导航-标题栏是否透明 self.navigationController.navigationBar.translucent = NO; }- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}//下拉刷新的方法- (void) doRefresh{ //仅仅是模拟延时,使用时需要替换为需要的方法 double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds*NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ self.loading = NO; });}//无限滚动的方法- (void)loadMore{ //模拟延时 double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ //刷新后,当前页+1 self.pageCount++; //如果当前到第五页了,则停止无限滚动 if(self.pageCount==5) self.endReached = YES; //重新加载数据。 [self.tableView reloadData]; });}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if(section == self.numberOfSections) { //直接调用父类 PullToRefreshViewController中 的方法。 //片段加一(可以看下 PullToRefreshViewController.m 中方法的详细) return [super tableView:tableView numberOfRowsInSection:section]; } //根据有多少页,返回相应的记录数 return 20*self.pageCount;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ if(indexPath.section==self.numberOfSections) { //直接调用父类 PullToRefreshViewController中 的方法。 //设置最后一行为:加载更多 return [super tableView:tableView cellForRowAtIndexPath:indexPath]; } static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(!cell) { cell = [[UITableViewCell alloc] init]; } cell.textLabel.text = [NSString stringWithFormat:@"Row %d",indexPath.row]; return cell;}@end
0 0
- 第十二章:表视图常用UI范例——下拉刷新+无限滚动
- 第十二章:表视图常用UI范例——实现折叠列表,以及cell增加滑动手势
- 第十二章:表视图常用UI范例——保存和恢复自定义的UITableViewCell中UITextField中输入的值
- 表视图UI设计模式--下拉刷新模式
- UIScrollerView 无限滚动视图
- UI-滚动视图(滚动视图)
- [Sencha ExtJs6 Modern] pullrefresh下拉刷新导致infinite list(无限滚动列表)滚动条不正常
- 【无限滚动加载数据】—infinite-scroll插件的使用---------下拉加载数据、无线滚动
- iscroll5.js——滚动,下拉刷新上拉加载
- 带有滚动加载和下拉刷新的RecyclerView—AutoLoadRecyclerView
- iOS-UI-滚动视图2—分页查看功能
- Snail—UI学习之滚动视图UIScrollViewControl
- IOS之表视图下拉刷新(UITableViewController)
- iOS表视图下拉刷新与索引
- 滚动视图 - 无限轮播
- iOS 无限循环滚动视图
- UI滚动视图
- UI:UIScrollView滚动视图
- 初始Mapr(五)——安装 Mapr 软件
- 设计模式-创建型02-工厂方法
- __attribute__机制介绍
- 64-bitwin8 + Qt5.2.0(MSVS x86) + opencv2.4.6开发环境配置
- UNIX网络编程之常用函数
- 第十二章:表视图常用UI范例——下拉刷新+无限滚动
- 爱奇艺上市的好故事与坏故事
- 苹果消息推送服务教程:第一部分(共2部分)
- HDU4788
- java CyclicBarrier
- 软件升级程序深入浅出
- 初始Mapr(六)——Mapr库和封装库
- unity3d学习笔记(五)--结合Mecanim实现怪物AI
- Java动态代理