Сброс приложения на определенное событие
Я пишу приложение для iPhone, и после определенного события, скажем, пользователя, выигравшего игру, я хотел бы вернуть приложение в исходное состояние сразу после его запуска. Например, повторное выполнение viewDidLoad() и т. Д. Есть ли простой способ сделать это в XCode и цели C? Спасибо.
1 ответ
Вы отвечаете за состояние своего приложения - если вы знаете, каковы начальные настройки, вы сможете вернуть все в это состояние. Там нет простого [UIApplication reset]
метод, но есть несколько методов, которые облегчают работу:
Опубликуйте уведомление, когда вы хотите сбросить приложение, и убедитесь, что любые объекты, которые могут потребоваться для сброса самостоятельно (например, контроллеры представления), прослушивают это уведомление.
Переместите код инициализации в другой метод, а затем вызовите его из обоих ваших
-init
метод и ваш обработчик уведомлений сброса.Вы можете заставить контроллер представления перезагрузить свой вид, установив его свойство вида в nil. При следующем доступе к этому свойству
-loadView
будет вызван, и это, в свою очередь, загрузит соответствующий.xib или создаст необходимые представления.Во многих случаях вы можете просто сбросить модель данных приложения в исходное состояние. Представления в вашем приложении обычно должны отражать состояние модели данных, поэтому очистка данных должна привести к тому, что представления также вернутся в исходное состояние.
Подумайте, зачем вам это действительно нужно. Это может иметь смысл, если у вас есть кнопка "Сброс к заводским настройкам", но это также может указывать на то, что требуется больше дизайна. Почему пользователь не может просто выбрать все данные и удалить их? Какое состояние вы держите, чтобы пользователь мог сбросить таким образом?