You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:23:06