UItableViewページング

6132 ワード

UItableViewのページングは簡単で、ARC環境、ソースコードは以下のようにバックアップします.
最後のcellをクリックしてイベントをトリガーしてデータを処理しreloadData
RootViewController.m + RootViewController.h
#import "RootViewController.h"

@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) UITableView     *tableView;
@property (nonatomic, strong) NSMutableArray  *dataSource;

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    _dataSource = [[NSMutableArray alloc] init];
    for (int i = 0; i < 10; i++)
    {
        [_dataSource addObject:[NSString stringWithFormat:@"%d", i]];
    }
    
    _tableView  = [[UITableView alloc] initWithFrame:self.view.bounds
                                               style:UITableViewStylePlain];
    _tableView.dataSource = self;
    _tableView.delegate   = self;
    [self.view addSubview:_tableView];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //  , cell 
    return _dataSource.count + 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *reusedStr = @"demo";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedStr];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:reusedStr];
    }
    
    if([indexPath row] == ([_dataSource count]))
    {
        //  cell
        cell.textLabel.text=@" ..";
    }
    else
    {
        //  cell
        cell.textLabel.text=[_dataSource objectAtIndex:[indexPath row]];
    }

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //  , 
    if (indexPath.row == ([_dataSource count]))
    {
        [self performSelectorInBackground:@selector(loadMore)
                               withObject:nil];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        return;
    }
}

- (void)loadMore
{
    //  
    for (int i = 0; i < 10; i++) {
        [_dataSource addObject:[NSString stringWithFormat:@" %d", i]];
    }
    
    //  tableView
    [_tableView reloadData];
}

@end
#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end