由于需要在Mac OS X 10.6上实现tableView的功能,而10.6并不支持view base的NSTableView,所以必须通过cell base的NSTableView来实现。
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate,NSTableViewDelegate,NSTableViewDataSource>
{
NSMutableArray * _cellDataArray;
IBOutlet NSTableView *tv;
}
@property (assign) IBOutlet NSWindow *window;
@end
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
_cellDataArray = [[NSMutableArray alloc] init];
[_cellDataArray addObject:@"test"];
[_cellDataArray addObject:@"test2"];
[_cellDataArray addObject:@"test3"];
[tv reloadData];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return [_cellDataArray count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSString *columnIdentifier = [tableColumn identifier];
NSLog(@"%@",columnIdentifier);
return [_cellDataArray objectAtIndex:row];
}
@end
NSTableView的代理类中
1.需要有一个NSMutableArray的数组_cellDataArray来作为tableView的数据源。
2.需要有一个NSTableView类型的插座变量tv,来连接Xib文件中的tableView
3.在applicationDidFinishLaunching函数中,需要[tv reloadData]来刷新
4.必须实现numberOfRowsInTableView;tableView:objectValueForTableColumn:row:这两个函数
Xib文件中
1.tableView中的dataSource,delegate连接Objects中的App Delegate
2.App Delegate中的tv连接TableView
3.File's Owner的delegate连接Objects中的App Delegate