0

NSTableView1000 行以上の があります。ここで、ページネーションを追加し、1 つのビューに 100 の制限を追加してから、次のデータを表示するための [戻る] ボタンと [次へ] ボタンを配置します。

私はこのココア開発に不慣れです。誰でもこの問題を解決するのを手伝ってくれますか?

4

1 に答える 1

0

データをファイルに保存します。(page0、page1 ..)

 /* 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 に答える