即时通讯重定向用户设置,如果相机访问不允许和用户配置文件页面时,相机权限更改解散。
1.点击转到设置选项更改权限设置1.相机权限值更改后1.当点击上一个应用程序按钮(?)在状态栏上1.当前UIViewController关闭,并转到上一个UIViewController,即rootViewController如何防止这种情况发生?
UIViewController
x6h2sr281#
看看这个答案:让应用程序在检测到隐私设置更改时自行重启应用程序重新启动,您无法阻止此操作。您可以保留和恢复状态:https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html
9njqaruj2#
Swift 4.2
如果您的应用程序中有表单,并且您可能需要在应用程序中更改权限,则应该存储和恢复数据。因为您的应用可能会在权限更改(例如相机使用权限)后重新启动。
**第1步:**从情节提要上的Identity Inspector向UIViewController s添加恢复ID。**第二步:**将这些方法添加到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方法进行恢复。
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) }
2条答案
按热度按时间x6h2sr281#
看看这个答案:让应用程序在检测到隐私设置更改时自行重启
应用程序重新启动,您无法阻止此操作。您可以保留和恢复状态:https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html
9njqaruj2#
Swift 4.2
如果您的应用程序中有表单,并且您可能需要在应用程序中更改权限,则应该存储和恢复数据。因为您的应用可能会在权限更改(例如相机使用权限)后重新启动。
**第1步:**从情节提要上的Identity Inspector向
UIViewController
s添加恢复ID。**第二步:**将这些方法添加到AppDelegate中
**步骤3:**在
UIViewController
中复制这些方法。您的数据将以encodeRestorableState
方式存储。并采用decodeRestorableState
方法进行恢复。