NSTableView и отображение изображения сортировки в вопросе заголовка столбца

StackOverflow https://stackoverflow.com/questions/2038554

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть NSTableView с тремя столбцами.Я могу выполнить сортировку по любому столбцу, щелкнув заголовок столбца.Вот моя проблема:Я предварительно сортирую массив, а затем загружаю его в NSTableView, поэтому исходный TableView уже отсортирован по значениям в одном из трех столбцов.Теперь, когда я нажимаю на заголовки столбцов, я могу прибегнуть к помощи, и появляется небольшое изображение по возрастанию/убыванию (треугольник), указывающее порядок сортировки.Я хочу иметь возможность отображать этот треугольник восходящего изображения в заголовке столбца прямо в начале, когда 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
} 
Это было полезно?

Решение

Вы можете использовать -setIndicatorImage:inTableColumn: метод на НСТаблевиев сделать это.

Вы можете использовать строки NSAscendingSortIndicator и NSDescendingSortIndicator использовать встроенные изображения (с UIImage's +imageNamed: метод.)

Вы можете получить NSTableColumn * параметр для этого метода с использованием -tableColumnWithIdentifier: метод на НСТаблевиев.Установите идентификатор в столбце, используя атрибут идентификатора в Interface Builder (см. ниже).

Xcode interface builder screenshot

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top