2016-03-20 12 views
0

Ich versuche ein UIView-Popup zu haben, wenn ein Benutzer zum ersten Mal einen ViewController von einem Tab-Controller öffnet - ich möchte nur ein Popup-Fenster haben, um zu erklären, wie es funktioniert. wie ein Tutorial.Ermitteln des ersten Starts auf mehreren ViewControllern - Swift

Ich habe dies für den ersten ViewController implementiert, um beim Start zu popup, aber ich möchte es für den ersten Start auf mehreren ViewControllern auf meiner Tableiste überprüfen lassen. Ich bin mir nicht ganz sicher, was ich hier falsch mache. Die Ansicht enthält: UIImageView, UITextView und eine UIButton, mit der ich die Ansicht "ausblenden" kann, wenn sie angetippt wird.

override func viewDidLoad() { 
    super.viewDidLoad() 

    isAppAlreadyLaunchedOnce() 
    } 

func isAppAlreadyLaunchedOnce()->Bool{ 
    let defaults = NSUserDefaults.standardUserDefaults() 

    if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){ 
     print("App already launched") 

     return true 
    }else{ 
     backgrdView.hidden = false 
     messageView.hidden = false 
     textView.hidden = false 
     okButton.hidden = false 
     tobysLabel.hidden = false 


     return false 
    } 
} 


@IBAction func okButtonTapped(sender: UIButton) { 

    backgrdView.hidden = true 
    messageView.hidden = true 
    tobysLabel.hidden = true 
    textView.hidden = true 
    okButton.hidden = true 
} 

Antwort

1

Anstatt isAppAlreadyLaunchedOnce zu überprüfen, überprüfen Sie stattdessen den Start von ViewController. So wird firstVC launch zu userDefaults firstVC als true hinzugefügt. Wenn die Sekunde gestartet wird, setzen Sie secondVC als wahr. Dadurch werden die userDefaults für einzelne VCs beibehalten. Legen Sie Ihre UserDefaults fest, wenn auf OK geklickt wurde. Dann tun Sie dies in allen VC, während Sie den FirstLaunch für jeden VC überprüfen. Bitte halten Sie den Schlüssel für unterschiedliche VC unterschiedlich.

func isAppAlreadyLaunchedOnce()->Bool{ 
let defaults = NSUserDefaults.standardUserDefaults() 
if defaults.boolForKey("firstVC") { 
    print("First VC launched") 
    return true 
}else{ 
    backgrdView.hidden = false 
    messageView.hidden = false 
    textView.hidden = false 
    okButton.hidden = false 
    tobysLabel.hidden = false 
    return false 
} 
} 


@IBAction func okButtonTapped(sender: UIButton) { 
    backgrdView.hidden = true 
    messageView.hidden = true 
    tobysLabel.hidden = true 
    textView.hidden = true 
    okButton.hidden = true 
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstVC") 
} 
+0

Ich denke, ich folge hier, obwohl ich nicht so vertraut mit NSUserDefaults wie ich sein sollte. Wie kann ich einen ViewController ohne Rootberechtigung prüfen, wenn er zum ersten Mal gestartet wird? – pmoney13

+1

Sie können den Code innerhalb der 'viewDidLoad' Methode hinzufügen. Es wird nur einmal aufgerufen, wenn die Ansicht zum ersten Mal geladen wird. – atulkhatri

+0

das funktioniert perfekt @Arun - danke für das Wissen und deine schnelle Lösung. – pmoney13

Verwandte Themen