2

I'm presenting a UISheetPresentationController as the following when a user taps on a gear icon.

@IBAction func settings(_ sender: Any) {
    
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard.instantiateViewController(withIdentifier: "SettingsViewController")
    
    if let presentationController = viewController.presentationController as? UISheetPresentationController {
   
        presentationController.detents = [.medium(),.large()]
     
        self.present(viewController, animated: true)
        
    }
}//settings

However I'm also checking to ensure the Notifications are enabled / disabled. If Notifications has been disabled, I popup and UIAlertController when the app enters the foreground in sceneDidBecomeActive

However if the SettingsViewController was visible on the screen after the app becomes active, I get the following error:

Attempt to present <UIAlertController: 0x145008200> on <UINavigationController: 0x14301a200> (from <xxx.ViewController: 0x14280d8a0>) which is already presenting <xxx.SettingsViewController: 0x142d17460>.

How can I dismiss the UISheetPresentationController when the app becomes sceneWillResignActive or sceneDidEnterBackground

Paul S.
  • 1,342
  • 4
  • 22
  • 43

0 Answers0