3

まず、3日間検索しましたが、探しているものが見つかりませんでした。

2番目のポイントは、私はXcodeプログラミングに非常に慣れていないので、答えをできるだけ単純または詳細に保つようにしてください。

私の内部ではNSTableView、最初の列をテキストにし、その後Xにチェックボックスの列をいくつか配置し、最後の列をテキストにする必要があります。列のX数は、SQLiteファイルから読み取ったエントリの数に基づく変数です。

私の質問は次のとおりです。

  • 実行時にどのタイプと列をいくつ持っているかを定義するにはどうすればよいですか?
  • チェックボックスの値がチェックされているかどうかはどうすればわかりますか?
  • セルの数がわからない場合、テーブルビューに行を追加するにはどうすればよいですか?

お時間を割いていただきありがとうございます!

よろしく、イゴール

4

1 に答える 1

6

実行時にテーブルを作成したいのですが、そこにいくつの列があるかわかりません!!!

それは大したことです。

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]; 
}
于 2013-01-10T17:38:20.477 に答える