2017-01-27 3 views
0

J'essaie de présenter un alertview pour les utilisateurs lors de leur premier lancement de l'application pour leur donner des instructions sur la façon de l'utiliser. J'utilise le pod 'SCAlertView'. Lorsque je place le code dans la section viewDidLoad() ou ViewWillAppear() le code n'est pas exécuté, cependant lorsque je teste après les autorisations, le code est exécuté. Voici le code suivantExécuter alertView après les autorisations de l'appareil iOS

override func viewDidLoad() { 
    super.viewDidLoad() 

    if defaults.bool(forKey: "launchedBefore") == false{ 
     let alert = SCLAlertView() 
     alert.showInfo("Welcome to \(appName)", subTitle: "Swipe up on the bottom green button to find all your tools to navigate the app!") 
    } 

Quelqu'un at-il des suggestions sur la façon dont je peux obtenir ce code à exécuter après les autorisations pour microphone de la caméra &?

+1

Ne tentez pas de présenter une alerte dans 'viewDidLoad' ou' viewWillAppear'; votre vue n'est pas encore dans l'interface. Attendez jusqu'à 'viewDidAppear'. – matt

+0

Où et quand définissez-vous la valeur launchBefore? –

+0

je m'excuse je me suis trompé, le code original était dans 'ViewDidAppear' @matt. – Onicha21

Répondre

0

Faire quelque chose juste après la demande d'autorisations est assez compliqué car la connaissance que l'autorisation a été accordée peut vous arriver de manière asynchrone. Ma solution consiste à écrire une fonction d'utilité qui accepte un gestionnaire d'achèvement, puis examine l'état de l'autorisation, invoquant l'alerte de demande d'autorisation si nécessaire. Il appelle ensuite ce gestionnaire d'achèvement seulement si nous avons ou si nous avons obtenu l'autorisation.

+0

Exemple de code complet ici: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/ master/bk2ch17p702takeAPicture/ch30p962takeAPicture/ViewController.swift – matt

+0

Est-ce que la suggestion de @matt a résolu votre question spécifique? Si oui, marquer comme correct. Si non, faites le nous savoir et nous essaierons d'aider. –