应用程序第二次启动时显示第二个 ViewController

Posted

技术标签:

【中文标题】应用程序第二次启动时显示第二个 ViewController【英文标题】:show the second ViewController when app launch the second time 【发布时间】:2019-09-07 19:14:38 【问题描述】:

所以当我第一次启动我的应用程序时,会有一个受欢迎的 ViewController。如何设置一个函数,在用户第二次启动应用程序时显示第二个 ViewController。

【问题讨论】:

您正在向后看。您的逻辑应该是如何仅在首次启动时显示欢迎屏幕。这已经在这里讨论过很多次了。 好的,你能告诉我怎么做吗? 【参考方案1】:

在您的应用程序的用户默认值中添加一个布尔值,以检查应用程序是否是第一次启动。基于此布尔值在您的应用委托类中加载另一个 ViewController。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
     let isFirst = UserDefaults.standard.bool(forKey: “isLaunched”) // edited this after rmaddy's comment 
     var viewControllerWithIdentifier = "SecondViewController"
     if !isFirst 
        UserDefaults.standard.set(true, forKey: “isLaunched”)
        viewControllerWithIdentifier = "FirstViewController"
     
     let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
     let initialViewController : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier(viewControllerWithIdentifier) as UIViewController
     self.window = UIWindow(frame: UIScreen.main.bounds)
     self.window?.rootViewController = initialViewController
     self.window?.makeKeyAndVisible()
     return true

【讨论】:

应用仍会使用第一个视图控制器启动 我必须把这个func放在AppDelegate.swift文件中吗? 这个逻辑不正确。 isFirst 变量将始终为真。 我试过isFirst.toggle()它仍然无法正常工作 @rmaddy 怎么样? UserDefaults.standard.bool(forKey: “isFirst”) 将返回 false,因为它的值将在 if 条件中设置为 false。我在这里错过了什么吗?

以上是关于应用程序第二次启动时显示第二个 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

应用程序第二次启动时显示不同的视图

NO_DATA_FOUND ORACL NVL函数,当第一个为空时显示第二个参数值

Android:ViewPager 总是在开始时显示第二页

当我第二次启动应用程序时标签消失

Sharepoint 导航菜单折叠

Swift 仅在使用导航控制器首次启动时显示视图