0

我有一个NSTableView1000+ 行。现在我想为其添加分页并在一个视图中添加 100 的限制,然后放置 Back 和 Next 按钮以查看下一个数据。

我是这个可可开发的新手。谁能帮我解决这个问题。

4

1 回答 1

0

将数据存储在文件中。(第0页,第1页..)

 /* page0   <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <array>
        <string>/Volumes/Drop Box</string>
        <string>/Volumes/Backup</string>
        <string>/Users/Music</string>
    </array>
    </plist>*/

#import <Cocoa/Cocoa.h>


@interface ViewController : NSObject {
    NSTableView *tableView;
    NSMutableArray *mDataSource;
    NSInteger mPageNumber;
    NSInteger mTotalPage;
}
-(IBAction)nextPage : (id)sender;//for next page
-(IBAction)prevPage : (id)sender;// for prev. page
-(void)fetchData;
@property (assign) IBOutlet NSTableView *tableView;
@end
#import "ViewController.h"


@implementation ViewController
@synthesize tableView;
- (id) init
{
    self = [super init];
    if (self != nil) {
        mDataSource = [[NSMutableArray alloc] init];
        mPageNumber=0;
        mTotalPage =2;// total numer of pages
        [self fetchData];
    }
    return self;
}


-(IBAction)nextPage : (id)sender;
{
    ++mPageNumber;
    if (mTotalPage<=mPageNumber) {
        mPageNumber=0;// point to first page
    }
    [self fetchData];

}
-(IBAction)prevPage : (id)sender;
{
    --mPageNumber;
    [self fetchData];
}

-(void)fetchData;
{
    [tableView setDataSource:nil];
    NSString *lDataSourcePath = [[NSString alloc] initWithFormat:@"/page%d",mPageNumber];
    NSArray *lDataSource = [[NSArray alloc] initWithContentsOfFile:lDataSourcePath];
    [mDataSource setArray:lDataSource];
    [lDataSource release];
    [lDataSourcePath release];
    [tableView setDataSource:self];
    [tableView reloadData];
}
-(void)dealloc
{
    [mDataSource release];
    [super dealloc];
}

#pragma mark Data Source
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return [mDataSource count];
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    return [mDataSource objectAtIndex:rowIndex];
}

@end
于 2013-02-19T09:25:04.430 回答