您的位置:首页 > 产品设计 > UI/UE

UItableView实现分页效果(点击more再显示10条)

2012-01-08 00:27 639 查看
UITableview 能够列表显示许多内容,也是我们开发中经常用的一个组件。我们经常会分页显示列表,如先显示 10条记录,点击更多在添加 10 条,以此类推,下面是实现类似更多显示的一个 demo。

关键再在于函数

实现的效果如下:self.myTableViewinsertRowsAtIndexPaths:insertIndexPathswithRowAnimation:UITableViewRowAnimationFade];的应用

实现的效果如下:


点击 “More…”,实现后面的效果.
实现的思路:

基本上就是数据源里先只放10条, 点击最后一个cell时, 添加更多的数据到数据源中.。
处理"加载更多"的那个cell的选择事件,触发一个方法来加载更多数据到列表。
indexPathForRow插入数据。

#import<UIKit/UIKit.h>

@interfaceiphone_tableMoreViewController : UIViewController

<UITableViewDelegate,UITableViewDataSource>{

IBOutletUITableView *myTableView;

NSMutableArray *items;

}

@property (nonatomic,retain) UITableView *myTableView;

@property (nonatomic,retain) NSMutableArray *items;

@end

#import"iphone_tableMoreViewController.h"

@implementation iphone_tableMoreViewController

@synthesize items,myTableView;

- (void)viewDidLoad {

[superviewDidLoad];

items=[[NSMutableArray alloc] initWithCapacity:0];

for (inti=0; i<10; i++) {

[items addObject:[NSString stringWithFormat:@"cell %i",i]];

}

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

}

- (void)viewDidUnload{

items=nil;

self.myTableView=nil;

}

- (void)dealloc {

[self.myTableView release];

[itemsrelease];

[superdealloc];

}

-(NSInteger)tableView:(UITableView *)tableViewnumberOfRowsInSection:(NSInteger)section {

int count =[items count];

return count + 1;

}

- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath {

staticNSString *tag=@"tag";

UITableViewCell *cell=[tableViewdequeueReusableCellWithIdentifier:tag];

if(cell==nil) {

cell=[[[UITableViewCell alloc] initWithFrame:CGRectZero

reuseIdentifier:tag] autorelease];

}

if([indexPath row] == ([items count])) {

//创建loadMoreCell

cell.textLabel.text=@"More..";

}else{

cell.textLabel.text=[items objectAtIndex:[indexPathrow]];

}

returncell;

}

- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row == [items count]) {

UITableViewCell
*loadMoreCell=[tableViewcellForRowAtIndexPath:indexPath];

loadMoreCell.textLabel.text=@"loading
more …";

[self
performSelectorInBackground:@selector(loadMore)withObject:nil];

[tableView
deselectRowAtIndexPath:indexPathanimated:YES];

return;

}

//其他cell的事件

}

-(void)loadMore

{

NSMutableArray *more;

more=[[NSMutableArray alloc] initWithCapacity:0];

for (inti=0; i<10; i++) {

[more
addObject:[NSString stringWithFormat:@"cell ++%i",i]];

}

//加载你的数据

[selfperformSelectorOnMainThread:@selector(appendTableWith:)withObject:more waitUntilDone:NO];

[morerelease];

}

-(void) appendTableWith:(NSMutableArray *)data

{

for (inti=0;i<[data count];i++) {

[items
addObject:[data objectAtIndex:i]];

}

NSMutableArray *insertIndexPaths = [NSMutableArrayarrayWithCapacity:10];

for (int ind= 0; ind < [data count]; ind++) {

NSIndexPath *newPath
= [NSIndexPath indexPathForRow:[itemsindexOfObject:[data objectAtIndex:ind]] inSection:0];

[insertIndexPaths
addObject:newPath];

}

[self.myTableViewinsertRowsAtIndexPaths:insertIndexPathswithRowAnimation:UITableViewRowAnimationFade];



}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: