1.首先在MainMenu.lib文件里面创建一个NSTableView,在界面上显示一个表格出来,并对表格进行设置。
2.创建文件TableViewDelegate.h和TableViewDelegate.m(文件内容如下文件所示)。并在MainMenu.lib文件中创建一个Object(从窗口右边选中Object,拉到在Window中的对话框中),命名:TableViewDelegate.
3.设置代理:tableView 进行设置,和图片中的Table View进行连接。
staticField 与窗口中的标签控件进行连接。
把dataSource 和delegate 代理给TableViewDelegate。
(如下图所示)
表格数据与定义数据要一致。
每一列的Identifier要与MqjTableData中定义的变量的名称要一样。
如第一列Identifier设置为:phoneID, 在MqjtableData中定义的变量就是NSString *phoneID。
其他列,同理。
MqjTableData.h
#import <Cocoa/Cocoa.h>
@interface MqjTableData : NSObject
{
NSString *phoneID;
NSString *phoneName;
NSString *phoneNumber;
}
@property (readwrite,copy) NSString *phoneID;
@property (readwrite,copy) NSString *phoneName;
@property (readwrite,copy) NSString *phoneNumber;
@end
MqjTableData.m
#import "MqjTableData.h"
@implementation MqjTableData
@synthesize phoneID;
@synthesize phoneName;
@synthesize phoneNumber;
@end
TableViewDelegate.h
#import <Cocoa/Cocoa.h>
@interface TableViewDelegate : NSObject
{
NSMutableArray *tableDataArray;
IBOutlet NSTableView *tableView;
IBOutlet NSTextField *staticField;
}
@end
TableViewDelegate.m
#import "TableViewDelegate.h"
#import "MqjTableData.h"
@implementation TableViewDelegate
-(id) init
{
[super init];
if(self)
{
tableDataArray = [NSMutableArray new];
}
return self;
}
-(void) awakeFromNib
{
[self loadTableData];
}
-(void)loadTableData
{
NSString *name = @"aaaa";
NSString *number =@"13645897845";
for (int i = 1; i<= 10; ++i)
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
MqjTableData *tableData =[MqjTableData new];
[tableData setPhoneID:[NSString stringWithFormat:@"%d",i]];
[tableData setPhoneName:[NSString stringWithFormat:@"%@_%d",name,i]];
[tableData setPhoneNumber:[NSString stringWithFormat:@"%lli",[number longLongValue]+i]];
[tableDataArray addObject:tableData];
[tableView noteNumberOfRowsChanged];
[tableData release];
[pool drain];
}
}
#pragma mark Action methods
#pragma mark Table view dataSource methods
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [tableDataArray count];
}
- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
if(![tableDataArray count])
{
return nil;
}
NSString *identifier = [aTableColumn identifier];
MqjTableData *td = [tableDataArray objectAtIndex:rowIndex];
return [td valueForKey:identifier];
}
- (void)tableView:(NSTableView *)aTableView
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
NSString *identifier = [aTableColumn identifier];
MqjTableData *td = [tableDataArray objectAtIndex:rowIndex];
[td setValue:anObject forKey:identifier];
}
- (void)tableView:(NSTableView *)theTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors
{
[tableDataArray sortUsingDescriptors:[tableView sortDescriptors]];
[tableView reloadData];
}
-(int)getRowCount
{
return [tableDataArray count];
}
- (void) tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if(![tableDataArray count])
{
return;
}
}
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification //点击某一行这个函数会自动响应。
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSUInteger selectItem =[tableView selectedRow];
if(selectItem == -1)
{
return ;
}
MqjTableData *tableData =[tableDataArray objectAtIndex:selectItem];
NSString *showLableString =[NSString stringWithFormat:@"ID:%@ Name:%@ Number:%@",[tableData phoneID],[tableData phoneName],[tableData phoneNumber]];
[staticField setStringValue:showLableString];
[pool drain];
}
点击某一行,获取该行的数据,并在标签上进行显示