16

NSTableView で iOS のようなセクションを作成する方法を探しています (iTunes 11 のように - 添付)。

スクリーンショットでわかるように、「アルバム」が 1 つのセクションで、「曲」が 2 番目です。どんな助けでも大歓迎です。

ありがとう!

ここに画像の説明を入力

4

4 に答える 4

22

これは古い質問だと思いますが、答えはビューベースの NSTableView を使用してから tableView:viewForTableColumn:row: を実装することです。

これは私のやり方に基づいたコードです。Xcode でコンパイルされていません。

-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSTableCellView *cell = nil;
        // get your row from your array of objects.
        // determine if it's a section heading or not.

    SomeClass *someObject = [self.myObjects objectAtIndex:row];

    if (someObject.isSectionHeading) {
        cell = [tableView makeViewWithIdentifier:@"HeaderCell" owner:self];
        cell.textField.objectValue = someObject.headingName;
    } else {
        cell = [tableView makeViewWithIdentifier:@"DataCell" owner:self];
        cell.textField.objectValue = someObject.rowValue;
    }

    return cell;

}

また、 tableView:isGroupRow は、セクションの見出しに灰色の背景を配置します

-(BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row {
    BOOL isGroup = NO;
    // Choose some way to set isGroup to YES or NO depending on your records.
    return isGroup;
}

Interface Builder で、NSTableCellViews の識別子を「HeaderCell」と「DataCell」に設定したことを確認してください。または、任意の名前を使用します。コードと一致する限り。これらのセルはいくつでも持つことができます。

NSTableCellView のサブクラスを作成すると、独自のテキスト フィールド、チェックボックス、画像などをビューに簡単に追加し、それに応じて値を設定できます。

于 2013-10-09T02:28:57.803 に答える
3

セクションが必要な場合は、基本的に自分でロールする必要があります (行 x はセクション セルであり、セクション ビューを提供することを認識してください。TwUIにはこれを可能にする TUITableView があります (私の経験では、スクロール パフォーマンスが大幅に向上します)

于 2012-12-07T18:55:18.157 に答える
2

NSTableViewgithub のサンプル コードを使用して with セクションを実装する方法を示す非常に優れた簡単なチュートリアルがあります。ここでそれを見てください。ビデオの説明にコードをダウンロードするためのリンクがあります。

于 2014-05-07T19:58:16.297 に答える