当用户第一次启动应用时,我需要在桌面视图上启动教练标记/教程视图。除非用户删除并重新安装应用程序,否则教练标记将永远不会再显示。
我搜索了互联网,但无法找到一个简单的解决方案。哦,我对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 :(得分: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 */
}