Использование кнопки для определения сортировки по возрастанию или убыванию в iPhone - PullRequest
0 голосов
/ 27 июня 2011

Каков наилучший способ сделать это?В настоящее время я просто сортирую по возрастанию, используя sortDescriptor, например, так:

NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];

Теперь, если у меня есть checkButton, который используется для определения, хочет ли пользователь сортировать по убыванию или по возрастанию, каков наилучший способ обработкиэтот?Проверять ли состояние checkButton перед созданием sortDescriptor?А затем, если пользователь снова нажмет checkButton (создаст еще один sortDescriptor противоположного типа (восходящий или нисходящий), затем запустите метод, чтобы отобразить данные в новом отсортированном режиме? Спасибо.

Ответы [ 3 ]

0 голосов
/ 27 июня 2011

Я бы подключил кнопку к функции, которая создает ваш дескриптор сортировки и извлекает ваши результаты. Это приводит к тому, что выборка выполняется при каждом изменении состояния.

Выберите значение по умолчанию, используйте его в качестве типа сортировки по умолчанию без какого-либо взаимодействия с пользователем, и тогда пользователи смогут изменять свои предпочтения с помощью кнопки.

Надеюсь, вам это пригодится!

0 голосов
/ 27 июня 2011

По сути, да.

Мне любопытно, почему вы задаете этот вопрос, поскольку вы в основном отвечаете на него самостоятельно (в форме серии вопросов «Должен ли я?»).

То, что вы описываете, является довольно распространенным паттерном.Однако кнопка не определяет порядок сортировки.Ваше приложение поддерживает конфигурацию, которая включает в себя порядок сортировки и, возможно, некоторые другие вещи.Конфигурация всегда включает в себя порядок сортировки, кнопка позволяет изменить его.Все, что использует Конфигурацию, должно быть уведомлено об изменениях, чтобы можно было обновлять представления, требующие обновления.

Существует множество различных способов сделать это, и Единого правильного пути для всех ситуаций не существует.Возможно, кнопка отвечает за сообщение таблице, что она обновила порядок сортировки.Или, возможно, таблица отвечает за наблюдение за изменениями в конфигурации.В любом случае работает.

0 голосов
/ 27 июня 2011
@interface MyController... {
  BOOL _sortAscending;
}

@implementation MyController

(IBAction)swapSort {
  _sortAscending = !_sortAscending;

  NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:_sortAscending selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
  //whatever else you need to do
}
...