Данные UITableView на основе предыдущего представления - PullRequest
0 голосов
/ 05 марта 2011

В настоящее время я работаю над разделом настроек моего приложения для iPhone, и я только что понял, что если бы каждая страница в настройках имела свой собственный вид и .h + .m, это было бы МНОГО ненужного кода иПросмотры.Поэтому я пришел к выводу, что у меня будет только один тип подробного представления, который будет меняться в зависимости от строки в табличном представлении, которое выбрал пользователь.Однако ... Я немного борюсь.

Настройка:

  • Для основного вида настроек я хочу, чтобы это был сгруппированный табличный вид с несколькими группами и строками.
  • Для подробного вида настроекЯ также хочу, чтобы это было сгруппированное табличное представление с несколькими группами и строками (вот где это сбивает с толку).

Я видел, как простые вещи, такие как изображения и метки, зависят от предыдущего представления,но не сгруппированные структуры табличного представления.Можно ли выполнить то, что я хочу, без тонны мнений или утверждений «если»?Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Да, это возможно.Apple, по сути, делает это с помощью комплекта настроек и его конфигурации через файл plist.

То, что вы хотите написать, это универсальный контроллер табличного представления, который загружает свою конфигурацию и содержимое из внешнего источника (один или несколько файлов plist - очень хороший выбор для этого).Это не очень сложно сделать, по крайней мере, до тех пор, пока действия, выполняемые вашим табличным представлением (например, когда пользователь касается ячейки), четко определены и легко кодируются в файле конфигурации.Например: такие действия, как «открыть новую страницу с этим конфигом» или «сохранить это значение под этим ключом в пользовательских значениях по умолчанию», можно легко настроить, а что-то вроде «попросить пользователя сделать снимок с камеры, а затем разрешить его обрезку».по своему вкусу и загрузить его в Twitter "сложнее.

1 голос
/ 05 марта 2011

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

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   [self.detailViewCtrl setSetting:[self.settings objectAtIndex:indexPath.row]];
   [self.navigationController pushViewController:self.detailViewCtrl];
}

В подробном представлении вам придется изменить следующий метод для отображения таблицы:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  // ... do something with the self.setting
}

И вы не можете забытьперезагрузите таблицу:

- (void)setSetting:(id)newSetting {
  if (setting != newSetting) {
    [setting release];
    setting = [newSetting retain];
    [self.tableView reloadData];
  }
}

Это предполагает следующее:

  • Ваше первое представление имеет экземпляр свойства detailViewCtrl
  • Ваше первое представление имеет NSArrayсвойства настроек, называемого «настройки»
  • Ваш подробный вид имеет свойство «настройки»
  • Ваш контроллер подробного представления знает, что делать со своим свойством «настройки»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...