Привет,Tableview sortDescriptorsDidChange: не вызывался
У меня есть NSTableView с двумя столбцами, который работает отлично ... кроме: Если я устанавливаю дескриптор сортировки таблицы в Interface Builder, все работает, как ожидалось, и sortDescriptorsDidChange получает как ожидалось. Если, однако, я не установить сортировки дескрипторов в Interface Builder и вместо того, чтобы использовать эту функцию:
[tableView setSortDescriptors:[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:) ]autorelease]]];
(где «имя» является идентификатором для крайнего левого столбца) в моем коде, sortDescriptorsDidChange никогда не будет вызываться , Когда я читал (неправильно читал?) Документацию Apple для NSTableView, то, что я делаю, я думаю, должен работать. Что я делаю не так?
P.S. Я знаю, что я мог бы также использовать NSArrayController для всего этого (и если я это делаю хорошо), но по какой-то причине я решил не делать этого.
в какой момент вы звоните 'setSortDescriptors'? По моему опыту, я назвал это слишком рано (например, awake from nib), когда объект (в вашем случае 'tableView') еще не был создан. – catsby
Возможно, это так. Я вызываю setSortDescriptors в windowControllerDidLoadNib (я, возможно, ошибочно думал, что это было правильное место для такого рода вещей в приложении на основе документов). Я только что проверил, и после вызова [myTableView setSortDescriptors] возвращается [myTabeView sortDescriptors] ноль. Где (когда) - правильное место (время), чтобы сделать такой вызов (или я должен задать новый вопрос о том, что происходит при запуске окна?) Спасибо! – notMyScreenName
Followup: Я перевел вызов setSortDescriptors в метод нажатия кнопки. Вызов setSortDescriptors программным образом вызывает вызов sortDescriptorsDidChange, но щелчок по заголовку столбца таблицы по-прежнему отсутствует. Должен ли я по-прежнему устанавливать что-то другое для этого (действие для щелчка на заголовке столбца или что-то в этом роде)? Я подумал от чтения документации, что такая вещь не нужна. – notMyScreenName