NSTableView basic
EXAMPLE

/* MyTableView1Controller */
#import <Cocoa/Cocoa.h>
@interface MyTableView1Controller : NSObject
{
IBOutlet id myTableView1;
NSMutableArray* dataArray;
}
- (IBAction)tableAction:(id)sender;
- (IBAction)addAction:(id)sender;
@end
-----
#import "MyTableView1Controller.h"
@implementation MyTableView1Controller
- (IBAction)addAction:(id)sender
{
[dataArray addObject:@"Untitled"];
[myTableView1 reloadData];
[myTableView1 selectRow:([dataArray count] - 1) byExtendingSelection:NO];
[myTableView1 editColumn:0 row:([dataArray count] - 1) withEvent:nil select:YES];
}
- (IBAction)tableAction:(id)sender
{
int row = [sender selectedRow];
NSLog(@"the user just clicked on row %d", row);
}
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return [dataArray count];
}
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
{
return [dataArray objectAtIndex:row];
}
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
{
[dataArray replaceObjectAtIndex:rowIndex withObject:anObject];
}
@end
EXAMPLE
====
コラムが二列の場合
#import "MyTableView1Controller.h"
@implementation MyTableView1Controller
/*
NSLog(@"start");
myTableView1Data_A = [NSArray arrayWithObjects:@"index",@"test1",@"value",@"text2", NULL];
[myTableView1 reloadData];
*/
- (IBAction)buttonAction:(id)sender //初期化(スタート)アクション
{
[myTableView1Data_A release];
myTableView1Data_A = [[NSMutableArray alloc] init];
[myTableView1Data_A addObject:@"textA"];
[myTableView1Data_B release];
myTableView1Data_B = [[NSMutableArray alloc] init];
[myTableView1Data_B addObject:@"textB"];
[myTableView1 reloadData];
}
- (IBAction)addAction:(id)sender
{
[myTableView1Data_A addObject:@"UntitledA"];
[myTableView1Data_B addObject:@"UntitledB"];
[myTableView1 reloadData];
[myTableView1 selectRow:([myTableView1Data_A count] - 1) byExtendingSelection:NO];
[myTableView1 editColumn:0 row:([myTableView1Data_A count] - 1) withEvent:nil select:YES];
}
- (IBAction)deleteAction:(id)sender
{
int row = [myTableView1 selectedRow];
[myTableView1Data_A removeObjectAtIndex:row];
[myTableView1Data_B removeObjectAtIndex:row];
[myTableView1 reloadData];
}
- (IBAction)tableAction:(id)sender
{
int row = [sender selectedRow];
NSLog(@"the user just clicked on row %d", row);
}
/////////いかがテーブルの実態
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return [myTableView1Data_A count];
}
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)row
{
if([[aTableColumn identifier] isEqualToString:@"ColumnA"]) {
return [myTableView1Data_A objectAtIndex:row]; // Column A
}
else if([[aTableColumn identifier] isEqualToString:@"ColumnB"]) {
return [myTableView1Data_B objectAtIndex:row]; // Column B
}
}
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
{
if([[aTableColumn identifier] isEqualToString:@"ColumnA"]) {
[myTableView1Data_A replaceObjectAtIndex:rowIndex withObject:anObject]; // Column A
}
else if([[aTableColumn identifier] isEqualToString:@"ColumnB"]) {
[myTableView1Data_B replaceObjectAtIndex:rowIndex withObject:anObject]; // Column B
}
}
@end


