如何在iOS应用首次启动时通过代码展示不同ViewController(Swift)
实现首次启动跳转教程页的正确方式
你的思路完全没问题!核心就是要记录用户是否是首次打开App,这里用UserDefaults来存储这个状态最合适不过了——它轻量、持久,专门用来存这种简单的用户配置信息。
下面是具体的实现步骤:
1. 核心逻辑:用UserDefaults标记启动状态
我们可以给UserDefaults设置一个自定义的key(比如"hasLaunchedBefore"):
- 当用户第一次打开App时,这个key不存在,
bool(forKey:)会返回默认值false,判定为首次启动; - 首次启动后,我们把这个key设为
true,下次启动就会读取到这个值,自动跳转到常规页面。
2. 完整代码实现
把你的didFinishLaunchingWithOptions方法改成这样:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) // 读取启动状态 let hasLaunchedBefore = UserDefaults.standard.bool(forKey: "hasLaunchedBefore") if !hasLaunchedBefore { // 首次启动:跳转教程页 window!.rootViewController = LaunchViewController() // 标记为已启动过 UserDefaults.standard.set(true, forKey: "hasLaunchedBefore") UserDefaults.standard.synchronize() // 可选,iOS现在会自动同步,但加上更稳妥 } else { // 非首次启动:跳转常规页面 window!.rootViewController = ViewController() } window!.makeKeyAndVisible() return true }
3. 测试小技巧
如果你想反复测试首次启动的效果,可以:
- 在模拟器/真机上删除App重新安装;
- 或者临时加一行代码重置状态(上线前记得删掉):
// 测试专用,上线前移除 UserDefaults.standard.set(false, forKey: "hasLaunchedBefore")
这样就能完美实现你想要的效果——用户第一次打开看教程,之后每次打开直接进入主页面。
内容的提问来源于stack exchange,提问作者user9245495
相关产品推荐
相关产品推荐

