问题描述
我有两个问题。
如何检测用户何时首次打开我的应用。
和
如何以编程方式更改初始视图控制器,以便在用户首次打开应用程序时打开“教程”视图控制器,而在用户打开应用程序的所有其他时间都打开“主页”视图控制器。 / p>
我已经创建了情节提要,我看到了必须删除其整个情节提要的解决方案,但我不想这样做,因为它将删除我以前的所有工作。如果存在不删除整个情节提要或不删除情节提要而不删除视图控制器中内容的解决方案,那么也是可以接受的。
谢谢您的帮助。
解决方法
在这种情况下我通常会做什么:
- 创建类似于启动屏幕的初始屏幕,并在
viewDidAppear
中确定是否应显示其他屏幕上的入职信息 - 以模态显示此屏幕
- 使用
.plist
适用于存储一个Bool
值,该值表示该应用程序是否曾经启动过,或入门已完成
您必须通过代码而不是界面生成器来完成此操作。
您可以在应用程序委托中完成此操作:
func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let seenTutorial = UserDefaults.standard.bool(forKey: "SEEN-TUTORIAL")
let rootViewController = seenTutorial ? UIViewController() : UITutorialViewController()
let bounds = UIScreen.main.bounds
self.window = UIWindow(frame: bounds)
self.window?.rootViewController = rootViewController
self.window?.makeKeyAndVisible()
return true
}
只要您觉得是要进行更新的好地方,就可以在教程控制器中更新您的UserDefaults:
UserDefaults.standard.set(true,forKey: "SEEN-TUTORIAL")