Каков стандартный способ обработки отмены редактирования на экране отображения сведений об элементе? - PullRequest
0 голосов
/ 15 января 2012

В настоящее время я работаю над приложением, которое отслеживает кошек и связанных с ними чизбургеров. Я поддерживаю приложение с Core Data. Между кошкой и чизбургерами существует отношение один ко многим (кошке разрешено иметь ноль или более чизбургеров).

У меня есть UITableViewController, который отображает всех кошек по имени (фамилия, имя). Когда вы нажимаете на строку в таблице, на контроллер навигации помещается новый UITableViewController, который отображает всю информацию о коте. Что бы ни стоило, табличное представление сгруппировано с первой секундой, содержащей информацию о кошке (имя / фамилия, цвет и т. Д.). Затем во втором разделе описываются все сырные котлеты, которые есть у кошки.

Правым элементом навигации является кнопка редактирования. Когда пользователь находится в режиме редактирования, я скрываю кнопку «Назад» на панели навигации, заменяя ее кнопкой «Отмена».

У меня такой вопрос: существует ли стандартная / общепринятая практика и т. Д. О том, как обрабатывать данные на экране редактирования? Я вижу, что это происходит одним из двух способов:

  1. Отслеживайте все, что пользователь изменяет, и затем, когда он нажимает кнопку done, скопируйте эти изменения в Cat NSManagedObject.
  2. Используйте NSUndoManager, связанный с NSManagedObjectContext, и когда пользователь начнет редактирование, создайте новую группу отмены. Когда они коснутся кнопки отмены, просто завершите группировку, а затем выполните отмену на NSUndoManager.

Мне кажется, вариант 2 кажется наиболее практичным, но у меня смешанные чувства по этому поводу. Для iPhone NSManagedObjectContext по умолчанию не имеет ассоциированного с ним NSUndoManager - я читал, что он подходит для приложений OSX. Я также не вижу много дискуссий об использовании NSManagedObjectContext в отношении программирования на iPhone во время чтения в сети. Это заставляет меня чувствовать, что люди могут использовать другой метод, о котором я не думал.

1 Ответ

1 голос
/ 15 января 2012

Более распространенным рабочим процессом для iPhone является отсутствие кнопки «Отмена».Большинство приложений просто превращают кнопку «Изменить» в кнопку «Готово».Отмените действие только в том случае, если потенциально потерянную информацию трудно воспроизвести.

Однако, если вам нужна кнопка «Отмена», первый вариант выглядит более упрощенным.Применить изменено на Готово.В любом другом случае просто отмените временные изменения данных.Сделайте последнее не только при отмене, но и если приложение должно завершиться.Принимайте изменения только с явным Готово.

...