我对整个iOS开发有点新鲜。我试图创建一个期刊应用程序,但是对于许多人可能比我更了解的事情而苦苦挣扎。我试图根据参数加载特定的视图。在我的情况下,在应用程序首次加载时,我想加载"设置"查看默认页面。但是在第一次加载之后(也就是在用户设置了他们的个人资料之后),我想加载" Master" view(显示必要信息的页面,例如创建新的日记帐分录等)
目前我在viewDidLoad中有这段代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let userDefaults = UserDefaults.standard
if userDefaults.value(forKey: "firstTimeLoad") as? Bool != nil {
// FIXME: Add code which loads the setup view
userDefaults.setValue(true, forKey: "firstTimeLoad")
userDefaults.synchronize()
} else if userDefaults.value(forKey: "firstTimeLoad") as? Bool == nil {
// FIXME: Add code which hides the Setup view and loads the Master view.
}
}
我尝试过一些事情,例如使用loadView加载特定视图,但似乎没有任何效果。
答案 0 :(得分:0)
啊,你应该通过AppDelegate.swift
来做到这一点 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let userDefaults = UserDefaults.standard
//If you have key, push your master view.
if userDefaults.value(forKey: "firstTimeLoad") as? Bool != nil {
return loadMasterViewController()
} else {
userDefaults.setValue(true, forKey: "firstTimeLoad")
userDefaults.synchronize()
}
return true
}
func loadMasterViewController() -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let masterViewController = storyboard.instantiateViewController(withIdentifier: "MasterViewController")
self.window?.rootViewController = masterViewController
self.window?.makeKeyAndVisible()
return true
}
答案 1 :(得分:0)
很容易做到:
结果:
在你的VC1中:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let userDefaults = UserDefaults.standard
userDefaults.setValue(false, forKey: "firstTimeLoad") // you can set firstTimeLoad's value for vc2 to load different view.
userDefaults.synchronize()
}
}
在你的VC2中:
import UIKit
class ViewController2: UIViewController {
var view1:UIView?
var view2:UIView?
override func viewDidLoad() {
super.viewDidLoad()
view1 = UIView.init(frame: UIScreen.main.bounds)
view1?.backgroundColor = .red
view2 = UIView.init(frame: UIScreen.main.bounds)
view2?.backgroundColor = .blue
// Do any additional setup after loading the view, typically from a nib.
let userDefaults = UserDefaults.standard
if userDefaults.value(forKey: "firstTimeLoad") as? Bool == false {
// FIXME: Add code which loads the setup view
self.view.addSubview(view1!)
userDefaults.setValue(true, forKey: "firstTimeLoad") // attention: there I changed the firstTimeLoad value to true, so next time you run in vc1, will load the blue view.
userDefaults.synchronize()
} else if userDefaults.value(forKey: "firstTimeLoad") as? Bool == true {
// FIXME: Add code which hides the Setup view and loads the Master view.
self.view.addSubview(view2!)
}
}
}