Повторное открытие приложения iOS через Url-схему - сохранение состояния

Я отправляю пользователя из своего приложения в браузер, а затем возвращаю его в приложение через свой собственный URL. Проблема в том, что все мои переменные экземпляра пусты, как только я вернусь! Интерфейс сохраняется (как и ожидалось, так как я использовал Storyboard), но значения (текстовых полей, переменных экземпляра и т.д.) Недоступны... они возвращают null.

Что происходит?

Ответы

Ответ 1

(Прошло некоторое время с тех пор, как у меня была эта проблема, но вот, что я думаю, произошло...)

При обращении к обратному URL-адресу в методе OpenURL моего делегата приложения я попытался вызвать метод диспетчера вида в ответ и сделал это, создав экземпляр этого контроллера представления методов. Поскольку я не обращался к текущему экземпляру, я по существу создал пустой второй экземпляр этого контроллера представления.

В этом случае я использовал NSNotification вместо прямого вызова метода. И я определенно считаю, что это самое элегантное решение.

Но то, что я также мог сделать ретроспективно, - это доступ к текущему экземпляру контроллера представления, который также оказался контроллером корневого представления, используя:

UIViewController *controller = self.window.rootViewController;

Ответ 2

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

1.Blocks

2.NSUserDefaults или база данных CoreData​​p >

3.Notifications

4.Shared Singleton экземпляры