DotMac

プログラムに関する覚え書き等

NSTableView basic

NSTableView basic




EXAMPLE

pct



/* 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

 

Parting Words (著作権, 連絡先情報, etc.)