2012-12-07 7 views
10

NSTableViewのセクションのようなiOSを作成する方法を探しています(iTunes 11 - Attachedのように)。セクションベースのNSTableViewビュー

「アルバム」は1つのセクションで、「曲」は2番目のセクションです。どんな助けもありがとう。

ありがとうございます!

enter image description here

+0

複雑なセルテーブルビューの下でhttps://developer.apple.com/library/mac/samplecode/TableViewPlayground/Introduction/Intro.html – johndpope

答えて

1

あなたはセクションをしたい場合は、基本的にその行xは、セクションセルも及び断面図を提供することになっている認識(独自のロールする必要があります。TwUIが向上し、これを可能にするTUITableViewを持っている(と大規模 viewForTableColumn:行:.

これはどのように基づいてコードです。私は、これは古い質問ですが、答えは、その後のtableViewを実装NSTableViewベースのビューを使用することです参照して私の経験では、スクロールのパフォーマンス、)

+0

"を試してください。行xがセクションセルであると認識され、セクション私が前進するために必要だったものです。以前はTwUIを使ってみましたが、いくつかのクラッシュバグがありました。 – user754905

+0

TwUIのほかにもいくつかの解決策がありますが、TwUIがはるかに滑らかであることがわかりました。 – Max

+0

スティッキー・ヘッダーを許可するようにTWUIを更新しましたが、このライブラリーに問題があります(特にnsviewサブビューを追加できません)。 https://github.com/johndpope/osx-stickyheaders – johndpope

19

私がやる。これは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; 
} 

をグレーの背景を置くあなたが「HeaderCell」と「DataCell」にごNSTableCellViewsの識別子を設定しているInterface Builderで確認してください。または、必要な名前を使用してください。あなたのコードと一致する限り。これらの細胞は、必要な数だけ持つことができます。

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

+2

'tableView:heightOfRow:'メソッドを実装することによって、コンテンツセルとセクションセルの間でセルの高さを違うように指定することもできます。セクションセルでは、デフォルトの高さを '[tableview rowHeight]'と使用することができます。コンテンツセルでは、70.0のように独自の値を使用できます。 – HuaTham

+0

私が知っている限り、この技術は実際にはiPhoneのように見えるところにヘッダービューを貼り付けません。私はTWUI github.com/johndpope/osx-stickyheadersを使ってこのエフェクトを作成することができただけです。 – johndpope

+0

@johndpope NSTableViewのプロパティをチェックしてください。 'floatsGroupRows' –

2

NSTableViewのサンプルコードを含むセクションをgithubに実装する方法を示すとても簡単で簡単なチュートリアルがあります。ちょうどそれを見てhereとビデオの説明には、コードをダウンロードするためのリンクがあります。

関連する問題