2016-10-11 10 views
0

私は自分のコードにイントロシーケンスを追加しようとしているので、初めてアプリケーションを開くと、ユーザーはいくつかの基本情報(私はUserDefaultsに保存できる)を入力できるようになります。イントロシーケンスを実装する最良の方法は? Swift

これを行う方法は、最初にtrueに設定されたisFirstTimeという変数を持つことです。アプリが開かれるたびに、UserDefaultsにisFirstTimeの値があるかどうかがチェックされます。表示されていない場合は、イントロシーケンスが表示されているView Controllerがトリガーされます。イントロシーケンスが終了すると、isFirstTimefalseに設定され、UserDefaultsに格納されます。

これは正しい実装ですか、より効率的な方法ですか?

EDIT:誰かが興味があれば、これは私のイントロシーケンスを実装するために使用したコードです。私は最初にアプリケーションを開くかどうかを追跡するView Controllerの外にブール変数を割り当てます。

var isFirstTime = true 

はその後、私のViewDidAppear(それはViewDidLoad方法では動作しません)で、私はすでに私のisFirstTime変数のUserDefaultを持っているかどうかをチェックし、このコードを追加しました。はいの場合、残りのプログラムを実行しますが、そうでない場合は、イントロシーケンスのView Controllerを起動します。最初はisFirstTimeの値を変更し、UserDefaultとして設定され、第二には、次のとおりです。私は、ユーザーの基本的な情報を収集して行われています私のイントロシーケンスビューコントローラでは、

if UserDefaults.standard.object(forKey: "isFirstTime") != nil{ 
     // Not the first time app is opened 
     isFirstTime = false // I use isFirstTime elsewhere in my code too. 
    } else { 
     let introVC = self.storyboard?.instantiateViewController(withIdentifier: "intro") 
     self.present(introVC!, animated: false, completion: nil) 
    } 

、私は2つのことを行いますView Controllerを終了します。

isFirstTime = false 
UserDefaults.standard.set(isFirstTime, forKey: "isFirstTime") 
dismiss(animated: false, completion: nil) 
+2

。 (もちろん、悪魔は詳細になります。) – matt

+2

逆の場合は、最初にそれをnilかfalseにチェックしてください。 Introシーケンスを表示したら、ブール値をtrueにします。 – Arasuvel

+0

@Arasuvel逆の場合はどうしたらいいですか? – kbunarjo

答えて

2

あなたは簡単に達成できます。これは私が使ったコードです。

は、ステップ1まずUserDefaultManager.swift

import UIKit 

// User Defaults Manager Constants 
let kIsFirstTimeLaunch = "IsFirstTimeLaunch" 

class UserDefaultsManager: NSObject { 

// MARK: Setter Methods 

class func setIsFirstTimeLaunch(flag: Bool) { 
    NSUserDefaults.standardUserDefaults().setBool(flag, forKey:kIsFirstTimeLaunch) 
    NSUserDefaults.standardUserDefaults().synchronize() 
} 

// MARK: Getter Methods 

class func isFirstTimeLaunch() -> Bool { 
    return NSUserDefaults.standardUserDefaults().boolForKey(kIsFirstTimeLaunch) 
} 

// MARK: Reset Methods 

class func resetIsFirstTimeLaunch() { 
    NSUserDefaults.standardUserDefaults().removeObjectForKey(kIsFirstTimeLaunch) 
    NSUserDefaults.standardUserDefaults().synchronize() 
} 

} 

ステップ2と呼ばれるファイルを作成します。あなたの実装ファイルでは以下のようにそれをチェック:それは完全に正しい

if(!UserDefaultsManager.isFirstTimeLaunch()) { 
     // Your code here. 
     let introVC = self.storyboard?.instantiateViewController(withIdentifier: "intro") 
     self.present(introVC!, animated: false, completion: nil) 

     // Update value in user defaults 
     UserDefaultsManager.setIsFirstTimeLaunch(true) 
    } 
関連する問題