Как спроектировать источник данных для UITableView для сортировки с помощью UISegmentedControl? - PullRequest
1 голос
/ 26 июня 2009

Я нахожусь в процессе разработки и кодирования приложения для iPhone для отображения времени фильма. В настоящее время у меня есть класс фильма, который содержит:

  • NSString title
  • NSSDate releaseDate
  • NSSDate score

Мой пользовательский интерфейс - это простой UINavigationController с сегментированным элементом управления в качестве заголовка и UITableView для отображения настроек Movies в Interface Builder. Сегментированный элемент управления состоит из 3 сегментов: заголовок, дата открытия и счет (на RottenTomatoes). Данные для табличного представления в настоящее время предоставляются NSMutableArray movies, который является свойством AppDelegate.

Я знаю, что могу зарегистрировать целевые действия, используя следующий код, но я не уверен, как отсортировать данные UITableView на этом этапе:

[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];

Как и где я могу прибегнуть к UITableView при изменении UISegmentedControl выбранного сегмента?

Ответы [ 3 ]

1 голос
/ 26 июня 2009

У меня есть сегментный элемент управления, который может упорядочивать / фильтровать элементы тремя различными способами - потому что количество элементов различается в зависимости от фильтра / порядка. Я использую 3 различных объекта NSArray для хранения отсортированных списков.

Поэтому, когда я загружаю данные, я помещаю их версию в правильное место в каждом массиве (или не в массиве в зависимости от фильтра).

У меня есть вызов, чтобы получить массив, который использует состояние сегментированного элемента управления, чтобы решить, какой массив вернуть.

Метод, который вызывает массив, используется вместо обычного массива, и это означает, что все, что мне нужно сделать, чтобы изменить вещи при изменении сегментированного элемента управления, это вызвать [tableView reloadData], и все для меня сделано.

1 голос
/ 26 июня 2009

Кроме того, вы можете отсортировать данные любым из методов sortArrayUsing xxx в NSArray.

1 голос
/ 26 июня 2009

Вы можете поместить некоторую логику в метод tableView:cellForRowAtPath: источника данных, чтобы проверить текущее значение UISegmentedControl и при необходимости изменить ячейку, возвращаемую для каждой строки. Затем, всякий раз, когда значение сегментированного элемента управления изменяется, все, что вам нужно сделать, это вызвать

[tableView reloadData];

и все готово.

...