Привязка какао: Отправить изменения вручную?

в моем приложении мне связали NSTableView с ArrayController (arrangedObjects). У меня также есть Представление Деталей (просто некоторые текстовые поля) связанный с тем же Контроллером (выбор).

Теперь каждый раз, когда я редактирую текстовое поле, изменения, автоматически отправляют в ArrayController и изменения Таблицы также. Как я могу избежать этого? То, что я хочу, является "Кнопкой отправки". Изменения на данных должны только быть, отправляют к контроллеру, когда я нажимаю кнопку и не автоматически каждый раз, когда я делаю редактирование.

1
задан TalkingCode 22 April 2010 в 05:45
поделиться

2 ответа

На этот вопрос действительно есть два ответа. Первый более философский: в большинстве случаев вы хотите, чтобы обновления модели происходили мгновенно. По большей части пользователям не нужно беспокоиться о сохранении, фиксации и т. Д. Изменений в make. Всепроникающая интеграция привязки с NSUndoManager означает, что все, что делает пользователь, можно отменить (или отменить). Все действия пользователя должны быть «с низким уровнем риска», чтобы внесение изменений и их последующая отмена не наносили ненужного «вреда» данным пользователя или состоянию приложения. Если вы используете Core Data для уровня вашей модели, вы всегда можете выполнить откат или сохранить набор изменений программно, используя методы NSManagedObjectContext . Если нет действительно веской причины, по которой пользователю нужна кнопка «Отправить», не добавляйте ее. Этой философии соответствует функция Gmail «Отменить отправку». Даже отправка электронного письма должна быть отменена (в разумных пределах).

Второй ответ более практичен.Конечно, бывают ситуации, когда вы имеете дело с серверной системой, которая не так прощает отмены, как Cocoa. В этом случае лучшим вариантом является создание временного объекта модели, который служит моделью для пользовательского интерфейса (подумайте о View-Model в архитектуре Model-View-View-Model (MVVM)). Когда пользователь отправляет изменения, вы можете скопировать объект временной модели в постоянную модель. В Core Data вы можете использовать постоянное хранилище в памяти, поддерживающее отдельный контекст управляемого объекта, чтобы хранить эти временные экземпляры, а затем объединять изменения из этого временного контекста в ваш основной контекст при отправке.

2
ответ дан 3 September 2019 в 01:07
поделиться

Этого может быть достаточно:

  • Выберите текстовые поля в Interface Builder.
  • Переключитесь на панель «Атрибуты текстового поля» на панели инспектора (нажмите Cmd-1).
  • Измените всплывающее окно «Действие» на «Только при вводе».
0
ответ дан 3 September 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: