2016-03-20 17 views
0

İlk kez bir Kullanıcı bir sekme çubuğu denetleyicisinden bir ViewController'ı açtığında UIView açılır pencereye sahip olmaya çalışıyorum - sadece nasıl çalıştığını açıklamak için bir ileti pop-up'ına sahip olmak istiyorum, bir öğretici gibi.Birden çok ViewControllers'da ilk başlatmayı algıla - Swift

İlk ViewController'ı başlatmak için bu pencereyi açıp kapamaya başladım, ancak sekme çubuğumda birden çok ViewControllers üzerinde ilk başlatmayı kontrol etmesini istiyorum. Burada yanlış yaptığımdan emin değilim. Görünüm: UIImageView, UITextView ve bir UIButton'a dokunduğumda görünümü "gizlemek" için kullanacağım.

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 
} 

cevap

1

isAppAlreadyLaunchedOnce denetlemek yerine ViewController'ın başlatılmasını denetleyin. Yani, firstVC, userDefaults firstVC değerini true olarak başlatıyor. İkinci başlatılırsa, ikinciVC'yi true olarak ayarlayın. Böylece bu, bireysel VC'ler için userDefaults'u koruyacaktır. Tamam'a dokunduğunuzda UserDefaults'unuzu ayarlayın. Sonra her VC için firstLaunch kontrol ederken tüm VC bunu yapın. Lütfen farklı VC için anahtarı farklı tutun.

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

Burada olması gerektiği gibi NSUserDefaults ile aşina olmamasına rağmen, burada takip ediyorum. Yine de, eğer başlatılmışsa, root olmayan ViewController'ı nasıl kontrol edebilirim? – pmoney13

+1

Kodu "viewDidLoad" yönteminin içine ekleyebilirsiniz. Görünüm ilk yüklendiğinde yalnızca bir kez çağrılır. – atulkhatri

+0

Bu mükemmel çalışır @Arun - bilgi ve hızlı çözünürlüğünüz için teşekkür ederiz. – pmoney13

İlgili konular