実行時にテーブルを作成したいのですが、そこにいくつの列があるかわかりません!!!
それは大したことです。
NSTableView
ドキュメントを読むと、addTableColumn:
方法が見つかります。ループ内で列を作成し、すべての列に識別子を付けることを忘れないでください。
そして、この上にチェックボックスが必要です。チェックボックスの作成も難しくありません。
編集:
チェックボックスの実装については、ここでプロジェクトを見つけてください。
チェックボックスを設定する列にcheckBoxCellを描画します。または、プログラムで実行することもできます。
私はIBを通してそれをしました。
各(行数)チェックボックスの状態を格納する配列を作成する必要があります。
- (id)init {
self = [super init];
if (self) {
states=[[NSMutableArray alloc] initWithObjects:@"1", @"0", @"1", nil];
}
return self; }
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
NSLog(@"Num of rows---- %ld", [names count]);
return [names count];
}
値が「check」のtableIdentifierを確認します。
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if ([[tableColumn identifier] isEqualTo:@"name"]) {
return [names objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"check"]) {
return [states objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"states"]) {
return [states objectAtIndex:row];
}
return 0;
}
オン/オフごとにチェックボックスの値を更新します。
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row {
[states replaceObjectAtIndex:row withObject:value];
[tableView reloadData];
}