2017-01-27 2 views
0

Ich versuche, den Benutzern beim ersten Start der App eine Alertview zu zeigen, um sie über die Verwendung zu informieren. Ich benutze den Pod 'SCAlertView'. Wenn ich den Code in den Abschnitt viewDidLoad() oder ViewWillAppear() platziere, wird der Code nicht ausgeführt, aber wenn ich nach den Berechtigungen teste, wird der Code ausgeführt. Hier ist der folgende CodeAlertView nach Geräteberechtigungen ausführen 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!") 
    } 

hat jemand Vorschläge, wie ich diesen Code zu bekommen, nachdem die Berechtigungen für Kamera & Mikrofon ausführen?

+1

Versuchen Sie nicht, eine Warnung aus 'viewDidLoad' oder' viewWillAppear' zu präsentieren; Ihre Ansicht befindet sich noch nicht in der Benutzeroberfläche. Warte bis 'viewDidAppear'. – matt

+0

Wo und wann setzen Sie den Wert lunchedBefore? –

+0

Ich entschuldige mich, ich misspoke, der ursprüngliche Code war in "ViewDidAppear" @matt. – Onicha21

Antwort

0

Etwas nach der Berechtigungsanforderung zu tun ist ziemlich schwierig, da das Wissen, dass die Berechtigung erteilt wurde, möglicherweise asynchron zu Ihnen kommt. Meine Lösung besteht darin, eine Dienstprogrammfunktion zu schreiben, die einen Beendigungshandler akzeptiert und dann den Berechtigungsstatus prüft und bei Bedarf die Erlaubnisanforderungswarnung einlädt. Es ruft dann den Beendigungshandler nur dann auf, wenn wir die Berechtigung haben oder erhalten.

+0

Komplette Beispielcode hier: https://github.com/matnteub/Programming-iOS-Book-Examples/blob/ Master/bk2ch17p702takeAPicture/ch30p962takeAPicture/ViewController.swift – matt

+0

Hat @matts Vorschlag Ihre spezifische Frage gelöst? Wenn ja, als richtig markieren. Wenn nicht, lass es uns wissen und wir werden versuchen zu helfen. –

Verwandte Themen