0

1 つの NSTableView に 2 つのデータ ソースを設定することは論理的に理にかなっていますか? それとも、ポップアップ ボタン (どのデータ ソースから読み取るかを選択できる) の方が合理的でしょうか?

単一の NSTableView オプションを使用する場合、すべてのデータを単一のデータ ソース (NSDictionary など) に入力してからテーブルにデータを入力するとよいでしょうか? このアイデアで私が目にする唯一の問題は、テーブルの選択が完了したときに何が起こるかということです.元の場所のどれが選択されたかをどのように解読しますか.

頭に浮かんだ別のアイデア/潜在的な問題...データソースからデータを取得してテーブルに直接データを入力すると、関連する NSTableView の「カウント」メソッドでテーブルのカウントをどのように与えるのでしょうか..データストア1とデータストア2の数はどうですか?

少しごちゃごちゃしていたらごめんなさい..ご意見ありがとうございます!

4

2 に答える 2

2

テーブル ビューにデータを表示するために複数のデータ ソースを使用できますが、それらはすべて、テーブル ビューとして割り当てられ、プロトコルdatasourceを実装する単一のコントローラー オブジェクトを介して収集する必要があります。NSTableViewDatasource

コントローラー オブジェクトにコードを記述して、構成する複数のソース配列を追跡し、アイテムの数と各アイテムのコンテンツの適切な値をテーブル ビューに提供する必要があります。

これは非常に単純な例です。

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return [array1 count] + [array2 count];
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    if(rowIndex >= [array1 count])
    {
        return [array2 objectAtIndex:rowIndex - [array1 count]];
    }
    else
    {
        return [array1 objectAtIndex:rowIndex];
    }
}

選択に関しては、コントローラーはデータの取得元を知っているため、ユーザーが特定の行を選択したときに、その行インデックスをバッキング ストアの 1 つで一致するオブジェクトに変換するのは簡単です。

于 2012-04-30T05:49:01.643 に答える
1

アプリケーション ロジックによっては、理にかなっている場合があります。最も簡単な方法は、テーブル セクションごとに異なるソースを設定することです。次に、セクション番号をデータベースへのセレクターとして使用できます。

于 2012-04-30T05:31:16.170 に答える