UIViewController закрывается после обновления разрешения камеры в настройках - PullRequest
0 голосов
/ 01 ноября 2018

Я перенаправляю пользователя в Настройки, если доступ к камере не разрешен и страница профиля пользователя закрывается при изменении разрешения камеры.

UIViewController dismiss after camera permission updated in Settings

  1. При нажатии Перейти к настройкам, чтобы изменить настройки разрешений
  2. После изменения значения разрешения камеры
  3. При нажатии кнопки предыдущего приложения (?) В строке состояния
  4. Текущий UIViewController отклонить и перейти к предыдущему UIViewController, который является rootViewController

Как предотвратить эту ситуацию?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Swift 4,2

Если в вашем приложении есть форма и вам может понадобиться разрешение изменить в вашем приложении вы должны хранить и восстанавливать данные. Потому что ваше приложение может перезапустить после изменения разрешения (разрешение на использование камеры для пример).

Шаг 1: Добавьте идентификаторы восстановления к вашим UIViewController s из Identity Inspector на вашей раскадровке.

Шаг 2: Добавьте эти методы в AppDelegate

func application(_ application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool {
    return true
}

func application(_ application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
    return true
}

Шаг 3: Переопределите эти методы в вашем UIViewController. Ваши данные будут храниться в методе encodeRestorableState. И они будут восстановлены decodeRestorableState методом.

override func encodeRestorableState(with coder: NSCoder) {
    coder.encode(self.myTextField.text ?? "", forKey: "myTextFieldRestorationKey")
    super.encodeRestorableState(with: coder)
}

override func decodeRestorableState(with coder: NSCoder) {
    if let txt = coder.decodeObject(forKey: "myTextFieldRestorationKey") as? String { self.myTextField.text = txt }
    super.decodeRestorableState(with: coder)
}
0 голосов
/ 01 ноября 2018

Посмотрите на этот ответ: После перезагрузки приложения при обнаружении изменения настроек конфиденциальности

Приложение перезапускается, и вы не можете предотвратить это. Вы можете сохранить и восстановить состояние: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html

...