Переключение между NSViewControllers - PullRequest
2 голосов
/ 02 июня 2011

Я разрабатываю приложение для Mac.Приложение имеет общий исходный вид слева и подробный вид справа, который является основной частью всего окна.

Это похоже на отношение Master-Detail, но каждый элемент в исходном представлении требует другогоподробный вид.Фактически, я разработал определенный NSViewController для каждого элемента в исходном представлении.

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

Теперь у меня вопрос: как я могу сохранить состояние NSViewController, чтобы я мог переключаться между ними, не теряя его состояния, и продолжатьгде я оставил?

Ответы [ 2 ]

0 голосов
/ 03 июня 2011

Два соображения о вашей проблеме:

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

  • При удалении вида из его суперпредставления не обязательно освобождать соответствующий контроллер вида. Вместо этого вы можете хранить строгие ссылки на все контроллеры представления в вашем контроллере окна / делегате приложения, поэтому ни одно состояние не будет потеряно.

0 голосов
/ 03 июня 2011

Используйте NSArchiver.Реализуйте архивирование / разархивирование в ваших методах dealloc / init и сохраняйте состояние каждого контроллера представления в файле с именем класса (если у вас есть один элемент для каждой политики контроллера представления).В противном случае придумайте какое-нибудь простое соглашение об именах и используйте его.

...