2017-06-06 12 views
1

ユーザーがアプリを初めて起動したときに、テーブルビューでコーチマーク/チュートリアルビューを起動する必要があります。ユーザーがアプリを削除して再インストールしない限り、コーチマークは再び表示されません。ユーザーが初めてアプリを起動したときにコーチマークを表示するSwift 3

私はインターネットを磨きましたが、簡単な解決策を見つけることができませんでした。ああ、私はSwiftにはかなり新しいですから、優しくしてください。 :)

編集: これは私が使ったものです。よく働く!

override func viewDidAppear(_ animated: Bool) { 
     if !UserDefaults.standard.bool(forKey: "isSecondTime") { 
      let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") 
      if launchedBefore { 
       print("Not the first launch.") 
      } else { 
       let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CoachMarksViewController") 
       self.present(VC, animated: true, completion: nil) 
       print("This the first launch.") 
       UserDefaults.standard.set(true, forKey: "isSecondTime") 
      } 

     } 
} 
+0

'UserDefaults'クラスを見てください。あなたの特別な眺めが見えているというインジケーターがあるのを見るのはかなり普通です。インジケーターが見つからない場合は、ディスプレイを表示して、デフォルトを更新して、次回にそれを見つけるようにしてください。 –

答えて

2

これを達成するには、「UserDefaults」を使用する必要があります。あなたの "viewDidLoad"メソッドでは、値が "isSecondTime == true"(この値は "UserDefaults"からアクセスします)とし、elseセクションに何もしないでチュートリアルを表示し、 "isSecondTime = true" UserDefaults "それはあなたの要件に応じて動作します。スウィフト3について

if(NSUserDefaults.standardUserDefaults().boolForKey("isSecondTime")) 
    { 
     // app already launched 
    } 
    else 
    { 
     // This is the first launch ever 
     // show your tutorial.....! 
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isSecondTime") 
     NSUserDefaults.standardUserDefaults().synchronize() 
    } 

:このコードをチェックしてください

let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") 
if launchedBefore { 
print("Not first launch.") 
} else { 
// // show your tutorial.....! 
print("First launch, setting UserDefault.") 
UserDefaults.standard.set(true, forKey: "isSecondTime") 
} 
+0

リクエストはSwift ** 3 **でしたか? –

+0

はい、Swift 3用です – Wes

1

したがって、アプリ全体で持続するコーチのマーク/チュートリアルを表示して終了するか再表示するかを示すブールが必要です。最初にアプリが実行されると、ブールはコーチのマークが表示されなければならないことを示し、アプリケーションはブールを設定して不要になったことを示します。

boolを永続化するには、UserDefaultsを使用してboolを保存し、アプリケーションの起動時に読み取ることができます。ここにApple documentationへのリンクがあります。

p.s.ユーザーが何かを忘れてしまったり、思考せずに却下したりして、再度表示する方法をユーザーに与えるのは良いことかもしれません。

+0

ユーザーにもう一度表示する方法を追加することは良い考えです。私はそれを行います!ありがとうございました:) – Wes

4

これはおそらく必要なのでしょうか?

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated); 
    let kFirstLaunch = "First_launch" 

    if (UserDefaults.standard.object(forKey: kFirstLaunch) == nil) { 
     UserDefaults.standard.set(1, forKey: kFirstLaunch); 
     //Show your coach marks here 

    } 
} 
0

あなたはこの小さな起動マネージャ:)

enum AppLaunchManager { 

    // MARK: - Private Attributes 
    private static let launchesCountKey = "LaunchesCount" 


    // MARK: Public Enum Methods 
    static func launchesCount() -> Int { 
     guard let launched = UserDefaults.standard.value(forKey: launchesCountKey) as? Int else { 
      return 0 
     } 
     return launched 
    } 

    static func registerLaunch() { 
     UserDefaults.standard.setValue(launchesCount() + 1, forKey: launchesCountKey) 
    } 

    static func isFirstLaunch() -> Bool { 
     return launchesCount() <= 1 
    } 
} 

そしてAppDelegate内を使用する必要があります。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
    AppLaunchManager.registerLaunch() 
    return true 
} 

それでは、ちょうど使用する必要があるときはいつでも:

if AppLaunchManager.isFirstLaunch() { 
    /* do whatever you need */ 
} 
関連する問題