我希望能够在我的应用上关闭并重新打开相同的视图控制器。我想这样做的原因是因为我有一个"教程"我第一次打开应用程序时只想提起的场景。每隔一次我希望应用程序立即打开第二个视图控制器。这是我的代码:
for GameViewController:
UserDefaults.standard.set(0, forKey: "View")
for GameViewController2:
UserDefaults.standard.set(1, forKey: "View")
for AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let viewCount = UserDefaults.standard.integer(forKey: "View")
var VC = UIViewController()
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
print(viewCount)
if viewCount == 0 {
//FirstView should initiate
VC = storyboard.instantiateViewController(withIdentifier: "First") as! GameViewController
} else {
//SecondView should inititate
VC = storyboard.instantiateViewController(withIdentifier: "Second") as! GameViewController2
}
self.window?.makeKeyAndVisible()
self.window?.rootViewController = VC
return true
}
问题是我每次打开应用程序时,它总是从我的第一个视图控制器而不是第二个视图控制器开始。任何帮助将不胜感激。
答案 0 :(得分:1)
根据上面的代码,您没有调用UserDefaults.synchronize
.htaccess
在这两种情况下都必须进行同步,因为这会将更改保存到磁盘
更新:正如@ cs4alhaider所说,Swift 4中不需要synchronize(),因此不再出现此问题。