2016-07-26 4 views
0

У меня есть четыре режима просмотра в моем приложении. Теперь давайте предположим, что пользователь находится на втором viewController, и он завершает приложение.Сохранение состояния приложения в ios с помощью Swift

Теперь, как я могу сохранить это состояние, чтобы при повторном открытии приложения он должен был быть представлен вторым viewContoller и должен также иметь возможность вернуться к первому viewContoller.

Решение, которое у меня на уме, состоит в том, чтобы просто сохранить переменную текущего экрана в userDefaults, а затем сделать этот viewController корневым контроллером. Но я знаю, что это не правильное решение, и я тоже потеряю навигацию. Прошу вас, спасибо.

+0

Я рекомендую записывать 'NSURL' в' NSUserDefaults', который соответствует любому пути контроллера навигации, в котором подробно описывается, как добраться до текущего состояния. –

+0

@ AbhiBeckert, пожалуйста, подробно опишите в ответ? – Byte

+0

У меня нет времени, чтобы написать полный ответ, возможно, вы можете это сделать? Но, например, в музыкальном приложении URL-адрес может быть «https: // my-music-app.com/playlists/playlist-name/song-name», чтобы показать контроллер «теперь воспроизводящий» для определенной песни, с обратной стороны , введя вас в список воспроизведения, содержащий эту песню, и другую кнопку «Назад», введя вас в список плейлистов. Этот URL-адрес можно использовать для других вещей, таких как кнопка совместного доступа в приложении. И у вас также может быть фактический веб-сервер, который может обрабатывать URL-адрес, а также для пользователей, у которых нет установленного приложения. –

ответ

0

Если вы еще не, создать класс под названием BaseViewController, который должен быть расширен из всех UIViewControllers:

class BaseViewController: UIViewController { 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     // always remember last controller shown 
     NSUserDefaults.standardUserDefaults.setObject(classForCoder(), forKey: "lastController") 
    } 
} 

Вы можете сохранить имя класса контроллера, идентификатор Int или somenthing вы хотите. Затем в делегате приложения при запуске приложения вы можете прочитать это значение и сделать свою собственную логику для открытия правильного контроллера.

if NSUserDefaults.standardUserDefaults().stringForKey("lastController") == MyCustomViewController.classForCoder() { 
    // open MyCustomViewController 
} 

Затем, когда пользователь возвращается, перенаправляйте направо UIViewController в соответствии с потоком вашего приложения.