我想知道哪种方法最好,以及如何实现它:
当应用程序运行时,它会检查用户默认值是否有值
NSUserDefaults.standardUserDefaults().valueForKey("uid") == nil
如果值为nil,我希望该应用重定向到名为LoginViewController
的视图,如果不是,则转到MainViewController
。两个条目都是UIViewController
。
我正在考虑创建一个新的RedirectViewController
作为初始视图控制器,并在那里检查它,但它不起作用,它不重定向:
class RedirectOnStart: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if NSUserDefaults.standardUserDefaults().valueForKey("uid") == nil {
self.performSegueWithIdentifier("loginRegisterSegue", sender: nil)
} else {
self.performSegueWithIdentifier("mainViewSegue", sender: nil)
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "loginRegisterSegue" {
let nav = segue.destinationViewController as! LoginRegisterViewController
}
if segue.identifier == "mainViewSegue" {
let nav = segue.destinationViewController as! ViewController
}
}
}
答案 0 :(得分:3)
如果您的方案以&#34开头,则应用程序运行时#34;你应该考虑直接在AppDelegate的didFinishLaunchingWithOptions
工作。
例如:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow()
if NSUserDefaults.standardUserDefaults().valueForKey("uid") == nil {
self.window?.rootViewController = LoginController()
} else {
self.window?.rootViewController = MainController()
}
self.window?.makeKeyAndVisible()
return true
}
答案 1 :(得分:0)
发现以上答案是针对Objective-C而不是Swift编写的;当前编写的它不会加载您想要的实际视图控制器。以下代码将在“ didFinishLaunchingWithOptions”中运行。
确保要检查的语句具有用户默认设置(在我的情况下为“ Username”)。如果发现它是空的;会将您定向到“ SignUpVC”,如果不为空,则会将您定向到“ LoginVC”。
您需要确保已在情节提要中为View Controller设置了标识符(在我的情况下为“ Main”)。
此后,请确保您具有某种方法设置,可以从登录/注册进入下一组屏幕,例如segue。
希望这对外面的人有帮助,祝您有愉快的一天。
快速3:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window = UIWindow()
if UserDefaults.standard.value(forKey: "Username") == nil {
let signupViewCon = storyboard.instantiateViewController(withIdentifier: "SignUpVC")
self.window?.rootViewController = signupViewCon
} else {
let loginViewCon = storyboard.instantiateViewController(withIdentifier: "LoginVC")
self.window?.rootViewController = loginViewCon
}
self.window?.makeKeyAndVisible()
return true
}