#import <UIKit/UIKit.h>
#import "PullToRefreshTableView.h"
@interface ChyoViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>{
PullToRefreshTableView * tableView;
NSMutableArray * array; // 数据源
}
@property (nonatomic, retain) PullToRefreshTableView * tableView;
@property (nonatomic, retain) NSMutableArray * array;
- (void)updateThread:(NSString *)returnKey;
- (void)updateTableView;
@end
//
// ChyoViewController.m
// PullToRefresh
//
// Created by hsit on 12-1-30.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#import "ChyoViewController.h"
@implementation ChyoViewController
@synthesize tableView;
@synthesize array;
- (void)dealloc{
[tableView release];
[array release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[NSMutableArray alloc] init];
tableView = [[PullToRefreshTableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[table setContentSize:CGSizeMake(320, 960)];
tableView.delegate = self;
tableView.dataSource = self;
tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:tableView];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (void)updateThread:(NSString *)returnKey{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
sleep(2);
switch ([returnKey intValue]) {
case k_RETURN_REFRESH:
[array removeAllObjects];
[array addObject:[NSString stringWithFormat:@"%d", [array count] + 1]];
break;
case k_RETURN_LOADMORE:
[array addObject:[NSString stringWithFormat:@"%d", [array count] + 1]];
break;
default:
break;
}
[self performSelectorOnMainThread:@selector(updateTableView) withObject:nil waitUntilDone:NO];
[pool release];
}
- (void)updateTableView{
if ([array count] < 10) {
// 一定要调用本方法,否则下拉/上拖视图的状态不会还原,会一直转菊花
[tableView reloadData:NO];
} else {
// 一定要调用本方法,否则下拉/上拖视图的状态不会还原,会一直转菊花
[tableView reloadData:YES];
}
}
#pragma mark -
#pragma mark Scroll View Delegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[tableView tableViewDidDragging];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSInteger returnKey = [tableView tableViewDidEndDragging];
// returnKey用来判断执行的拖动是下拉还是上拖,如果数据正在加载,则返回DO_NOTHING
if (returnKey != k_RETURN_DO_NOTHING) {
NSString * key = [NSString stringWithFormat:@"%d", returnKey];
[NSThread detachNewThreadSelector:@selector(updateThread:) toTarget:self withObject:key];
}
}
#pragma mark -
#pragma mark Table View DataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section{
if ([array count] == 0) {
// 本方法是为了在数据未空时,让“下拉刷新”视图可直接显示,比较直观
tableView.contentInset = UIEdgeInsetsMake(k_STATE_VIEW_HEIGHT, 0, 0, 0);
}
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * identifier = @"cell";
UITableViewCell * cell = [aTableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
}
NSInteger row = indexPath.row;
cell.textLabel.text = [array objectAtIndex:row];
return cell;
}
@end
分享到:
相关推荐
总之,通过UIRefreshControl和自定义的上拉加载逻辑,你可以为UITableView实现下拉刷新和上拉加载更多功能,提升应用的交互体验。同时,第三方库如XQRefresh则提供了更多便利和定制选项。在实际开发中,根据项目需求...
本示例"UITableView 下拉刷新demo"旨在教你如何在你的iOS应用中实现这个功能。 首先,下拉刷新功能通常依赖于UIRefreshControl类,这是苹果提供的一个内置控件,可以轻松地添加到UITableView中。创建...
在iOS开发中,UITableView是用于显示列表数据的重要控件,而下拉刷新功能则成为现代应用的标准特性之一,它允许用户在顶部拉动表格时获取最新的数据。`UITableView`的下拉刷新功能通常通过第三方库来实现,其中`...
下拉刷新(Pull-to-Refresh)则是用户在列表顶部向下拉动以刷新列表内容的交互方式。这通常用于获取最新的数据,如邮件应用中检查新邮件。实现这个功能,开发者需要使用UIRefreshControl或者自定义视图,监听手势...
在Swift中,实现UITableView或UICollectionView的上拉加载更多和下拉刷新功能,主要涉及到以下几个关键知识点: 1. **下拉刷新**:下拉刷新通常用来更新表格的初始数据。在Swift中,可以使用UIRefreshControl类来...
总之,为UITableView实现上拉刷新和下拉刷新是iOS开发中的常见任务,通过UIRefreshControl和自定义滚动代理方法可以轻松实现。使用第三方库则可以进一步提升用户体验,提供更个性化的交互设计。在实践中,确保正确...
本主题将深入探讨如何实现`UITableView`的上拉和下拉刷新功能,这在移动应用中非常常见,可以带给用户流畅的交互体验。 首先,下拉刷新通常用于更新当前视图的数据,比如加载最新的新闻或邮件。而上拉加载更多则是...
在“UITableView下拉-上拉刷新”这个主题中,我们主要讨论如何在UITableView中实现下拉刷新和上拉加载更多的功能,以及在加载过程中添加额外的用户体验元素。 1. **下拉刷新**: - 下拉刷新(Pull-to-Refresh)是...
首先,EGOTableViewPullRefresh是由Egor Gorin开发的一个轻量级库,专门用于在UITableView上实现下拉刷新。它提供了易于使用的接口和自定义的刷新指示器视图,帮助开发者快速集成这一功能。 1. **集成...
本教程将详细讲解如何在 `UIScrollView`(尤其是 `UITableView`)中实现上拉和下拉刷新功能。 一、`UIScrollView` 基础 `UIScrollView` 是一个可以容纳大型内容并允许用户滚动查看的视图。它通过内容大小(content...
这个"UITableView下拉刷新案例.zip"应该包含了一个实际的iOS项目示例,演示了如何在UITableView中实现下拉刷新。 首先,下拉刷新的核心是UIRefreshControl对象,它是iOS SDK内置的专门用于处理下拉刷新操作的控件。...
在iOS开发中,`UITableView`是用于展示列表数据的核心组件,而下拉刷新(Pull-to-Refresh)功能则成为现代应用中的一个常见交互设计。这个功能允许用户通过下拉列表来触发新的数据加载,比如刷新最新的消息或者更新...
下拉刷新(Pull-to-Refresh)是指用户通过向下滑动表格视图来触发数据的更新,而上拉加载更多(Load More)则是当用户滚动到底部时,加载更多的内容。这两种功能都需要对UITableView的滚动事件进行监听和响应。 在...
swift UICollectionView, UITableView 上拉/下拉刷新源代码,xcode6.1 保证能用,源代码出处(http://code4app.com/ios/Pull-to-refresh-in-Swift/53aa79ce933bf07d628b524b)不过下载下来编译20多处错误,本人已经...
它不仅支持下拉刷新,还支持上拉加载更多。 MJRefresh的使用通常包括以下步骤: - 引入库:通过CocoaPods或手动导入库文件。 - 添加刷新控件:在`viewDidLoad`方法中,对`UITableView`添加下拉刷新组件,如`[self....
【仿QQ下拉刷新】是一种常见的移动应用交互设计,它让用户在顶部下拉时触发页面内容的刷新。这种设计在QQ等社交应用中被广泛采用,后来成为了许多Android和iOS应用的标准特性。实现这一功能主要涉及到滚动视图、动画...
在iOS开发中,下拉刷新(Pull-to-Refresh)是一种常见的功能,允许用户通过在屏幕顶部向下拉动来更新内容。这种交互方式最早由Twitter引入,随后被广泛应用于各种应用程序,如新闻阅读器、社交媒体应用等。这个...
下拉刷新(Pull-to-Refresh)是一种常见的移动应用交互设计,用户通过在屏幕上向下拉动视图来触发刷新操作。这种功能通常被用于列表视图,如`UITableView`,以便用户获取最新的数据。 二、第三方库的选择 在iOS开发...
`UITableView`的上拉刷新和下拉加载功能是提升用户体验的关键特性,让用户在滚动到列表顶部时加载更多历史数据(下拉加载),而在滚动到底部时获取新的数据(上拉刷新)。这种设计模式在现代移动应用中非常常见,...
在iOS中,下拉刷新功能通常通过UITableView的扩展API实现,即UIRefreshControl类。以下是一般的实现步骤: 1. 创建UIRefreshControl对象:首先在你的UIViewController或UITableViewController中创建一个...