3

3列のNSTableViewがあります。列ヘッダーをクリックして、任意の列を使用して並べ替えることができます。ただし、ここに問題があります。配列を事前に並べ替えてから NSTableView にロードしているため、最初の TableView は 3 つの列のいずれかの値で既に並べ替えられています。列ヘッダーをクリックすると、並べ替えることができ、並べ替え順序を示す小さな昇順/降順の画像 (三角形) が表示されます。私が望むのは、NSTableViewが初めてロードされたときに、列ヘッダーにこの昇順の三角形を表示できるようにすることです。これは、既に配列をソートした列に基づいています。前もって感謝します :)

Thanks Peter and cb160. So I added this in my refreshList method:

*lastColumn パラメーターは、NSLog を使用して表示すると正しい識別子を持ちますが、テーブルが初めてデータをロードするときに、その三角形の画像がロードされません。ここに欠けているものはありますか?私のテーブルビューは次のように設定されています:

-(IBAction)refreshList:(id)sender
{
//setup array here and sort the array based on one column. This column has 
     identifier 'col1' and it works as expected

    // trying to set the sortindicator image for the column here
    NSTableColumn *lastColumn;

lastColumn = [aTableView tableColumnWithIdentifier:@"col1"];
[aTableView setIndicatorImage:[NSImage imageNamed:@"NSDescendingSortIndicator"]     
inTableColumn:lastColumn];
[aTable reloadData];
 } 

 - (int) numberOfRowsInTableView:(NSTableView *)aTable
{ // return count of array
 }

- (id)tableView:(NSTableView *)aTable objectValueForTableColumn: (NSTableColumn *)          
   tableColumn row:(int)row
  { 
   //set up arrays here to load data in each column


  }
- (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray   
  *)oldDescriptors
{
//sort here when column headers are clicked
} 
4

1 に答える 1

4

これを行うには、 NSTableViewの-setIndicatorImage:inTableColumn:メソッドを使用できます。

文字列を使用して、組み込みの画像を使用できますNSAscendingSortIndicatorNSDescendingSortIndicatorUIImageメソッド+imageNamed:を使用)。

NSTableColumn *このメソッドのパラメーターは、NSTableViewの-tableColumnWithIdentifier:メソッドを使用し取得できます。Interface Builderのidentifier属性を使用して、列にidenitfierを設定します(以下を参照)。

Xcodeインターフェイスビルダーのスクリーンショット

于 2010-01-10T21:23:00.420 に答える