ViewController 在第一次使用后没有改变
Posted
技术标签:
【中文标题】ViewController 在第一次使用后没有改变【英文标题】:ViewController not changing after first time use 【发布时间】:2018-07-31 20:51:25 【问题描述】:您好,我只想在第一次使用时显示视图控制器(即:有人第一次启动应用程序时,再也不会)。
我认为我的代码是正确的,但由于某种原因它无法正常工作。有谁知道为什么?
AppDelegate.swift
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
let userDefaults = UserDefaults.init()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
userDefaults.set(true, forKey: "isFirstTime")
userDefaults.set("RealmNotChosenOrSuggested", forKey: "RegionPreference")
userDefaults.set([], forKey: "PreferredRealms")
// Not using Storyboard instantiation code
window = UIWindow(frame:UIScreen.main.bounds) //canvas
window?.makeKeyAndVisible()
if (userDefaults.bool(forKey: "isFirstTime"))
userDefaults.set(false, forKey: "isFirstTime")
window?.rootViewController = StartupViewController()
else
window?.rootViewController = DashboardViewController()
return true
StartupViewController.swift
class StartupViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = .white
DashboardViewController.swift
import UIKit
class DashboardViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = .blue
【问题讨论】:
【参考方案1】:因为每次应用程序打开此运行时,您都会覆盖第一行中的密钥 isFirstTime
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
// userDefaults.set(true, forKey: "isFirstTime") // firs line comment it
if !(userDefaults.bool(forKey: "isFirstTime"))
userDefaults.set(true, forKey: "isFirstTime")
userDefaults.set("RealmNotChosenOrSuggested", forKey: "RegionPreference")
userDefaults.set([], forKey: "PreferredRealms")
window?.rootViewController = StartupViewController()
else
window?.rootViewController = DashboardViewController()
【讨论】:
当您从默认值中读取密钥时,任何布尔值的默认值为 false以上是关于ViewController 在第一次使用后没有改变的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有委托的情况下以模态方式呈现 ViewController,然后在 ViewController 被解除后运行回调函数/块?
导航到另一个ViewController后没有获取Tabbar