当用户第一次启动应用程序Swift 3时,显示教练标记视图

时间:2017-06-06 18:04:50

标签: ios swift uitableview swift3

当用户第一次启动应用时,我需要在桌面视图上启动教练标记/教程视图。除非用户删除并重新安装应用程序,否则教练标记将永远不会再显示。

我搜索了互联网,但无法找到一个简单的解决方案。哦,我对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")
            }

        }
}

4 个答案:

答案 0 :(得分: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

    }
}

答案 1 :(得分:2)

您应该使用“UserDefaults”来实现此目的。在你的“viewDidLoad”方法中,检查一个值是否说“isSecondTime == true”(你将从“UserDefaults”访问这个值)然后在else部分中什么都不做,显示你的教程并保存“isSecondTime = true”中的值“ UserDefaults”。它将根据您的要求工作。检查此代码:

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()
    }

对于Swift 3:

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")
}

答案 2 :(得分:1)

因此,您需要一个bool来指示是否显示在终止并重新启动应用程序时持续存在的教练标记/教程。第一次运行应用程序时,bool将指示必须显示教练标记,然后应用程序将设置bool以指示不再需要它们。

要保持bool,您可以使用UserDefaults存储bool并在应用启动时读取它。以下是Apple documentation上的链接。

P.S。为用户提供再次显示它们的方法可能会很好,因为它们可能会忘记某些内容或者只是不假思索地解雇它们。

答案 3 :(得分: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 */
}