选择在Swift

时间:2016-02-26 16:00:17

标签: ios swift

我想知道哪种方法最好,以及如何实现它: 当应用程序运行时,它会检查用户默认值是否有值 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

    }

  }
}

2 个答案:

答案 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”中运行。

  1. 确保要检查的语句具有用户默认设置(在我的情况下为“ Username”)。如果发现它是空的;会将您定向到“ SignUpVC”,如果不为空,则会将您定向到“ LoginVC”。

  2. 您需要确保已在情节提要中为View Controller设置了标识符(在我的情况下为“ Main”)。

  3. 此后,请确保您具有某种方法设置,可以从登录/注册进入下一组屏幕,例如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
  }