UITableViewController -> EditView - поток данных - PullRequest
0 голосов
/ 13 июля 2010

У меня есть UITableViewController, и в методе didSelectRowAtIndexPath я создаю экземпляр UIViewController и помещаю его в стек.

UIViewController предназначен для редактирования содержимого выбранной ячейки, но как мне вернуть изменения, сделанные в ViewController, обратно в TableViewController?

Приветствия

Ответы [ 3 ]

0 голосов
/ 13 июля 2010

Вы должны убедиться, что два контроллера как-то «разделяют» данные.Самый простой вариант - это первый проход контроллера в массиве (или только выбранном объекте), который выбран в таблице.Затем второе представление будет напрямую изменять этот массив (или отдельный объект), а затем при закрытии второго представления отобразятся измененные данные.

Возможно, вам придется перезагрузить таблицу.

Имеет смысл

0 голосов
/ 13 июля 2010

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

Теперь, когда оно приходитчтобы редактировать контроллеры представления, вы можете спроектировать их так, чтобы они поддерживали как прямое редактирование «живых» объектов, так и копию, которая позволит вам выполнить модель «Сохранить / Отменить».

Так что вы хотите, чтобы ваш контроллер представления редактированияредактировать какой-то ModelObject экземпляр с различными свойствами.Эти свойства будут соответствовать текстовым полям или указателям даты и т. Д. В представлении.Таким образом, у вас может быть Person с NSDate *dateOfBirth и NSString *name.

Когда вы создаете контроллер вида и помещаете его в контроллер навигации, вы даете ему один из этих ModelObject s для редактирования.Вы можете передать объект прямо из вашей модели, который будет редактироваться «вживую», когда пользователь вводит значения, или копию, которая позволит вам отменить изменения и реализовать рабочий процесс «Сохранить» или «Отменить».Для последнего вы можете добавить кнопки «Сохранить» и «Отмена» самостоятельно, прежде чем нажимать на представление редактирования, которое позволяет вам самостоятельно обрабатывать действия без необходимости делегирования.

Таким образом, ваш контроллер представления редактирования будет устанавливать свойства для этого объекта, когда пользовательвводит новое значение в текстовое поле или изменяет указатель даты.Для живого объекта эти изменения будут немедленно применены к вашей модели.Для копирования, когда пользователь нажимает кнопку Сохранить, вы запрашиваете в редакторе представления редактирования объект, который вы передали, и объединяете / копируете его обратно в модель.Если пользователь нажимает кнопку отмены, вы просто отбрасываете объект.

0 голосов
/ 13 июля 2010

Переопределите метод -viewWillAppear: «родительского» или контроллера табличного представления и перезагрузите туда данные табличного представления, используя [tableView reloadData];.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...