如何通过 swift 代码更改初始视图控制器
How to change the initial view controller through swift code
我正在开发一个初始视图控制器为 "Navigation controller" 的应用程序。该应用程序包含 2 个要实施的想法。
1) 从RegisterViewController中,用户必须注册手机号码验证//从短信或电话,验证后进入HomeViewController(条件:当用户第一次安装应用程序时,它显示RegisterViewController )
2) 如果应用程序已经安装到 iPhone 并且用户还注册了手机号,那么用户现在打开相同的应用程序 initialViewController 必须是 HomeViewController
如何通过swift代码实现这个想法?
您必须更改 rootViewController
而不是 initialViewController。当用户验证并进入 NSUserDefaults
中的 HomeViewController 存储标志时,然后每次 AppDelegate
didFinishLaunchingWithOptions
检查用户是否已使用 NSUserDefaults
.
进入 HomeViewController
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
let nav = UINavigationController(rootViewController: homeViewController)
appdelegate.window!.rootViewController = nav
喜欢
var viewController: UIViewController!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if NSUserDefaults.standardUserDefaults().objectForKey("notRegistered") == nil
{
viewController = storyboard.instantiateViewControllerWithIdentifier("RegisterViewController")
}
else {
if NSUserDefaults.standardUserDefaults().objectForKey("notRegistered") as! String == "registred"
{
viewController = storyboard.instantiateViewControllerWithIdentifier("HomeViewController")
}
else
{
viewController = storyboard.instantiateViewControllerWithIdentifier("RegisterViewController")
}
// if you want to create the UINavigationController use this
let nav = UINavigationController(rootViewController: viewController)
self.window!.rootViewController = nav
else directly access use this
self.window!.rootViewController = viewController
self.window.makeKeyAndVisible()
// Override point for customization after application launch.
return true
}
成功后在注册页面保存赞
//Save
NSUserDefaults.standardUserDefaults().setObject("registred", forKey: "notRegistered")
在你的 appdelegate 中实现这个逻辑 class:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let isRegistered = NSUserDefaults.standardUserDefaults().boolForKey("ALLREADY_REGISTER")
if isRegistered == true{
// implement home view controller
let homeViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeVC") as! HomeViewController
self.window?.rootViewController = homeViewController
self.window?.makeKeyAndVisible()
}else{
// implement register view controller
let registerViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("RegisterVC") as! RegisterViewController
self.window?.rootViewController = registerViewController
self.window?.makeKeyAndVisible()
}
return true
}
然后当第一次注册成功完成时然后为键设置 bool 变量 true ALLREADY_REGISTER
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "ALLREADY_REGISTER")`
我正在开发一个初始视图控制器为 "Navigation controller" 的应用程序。该应用程序包含 2 个要实施的想法。
1) 从RegisterViewController中,用户必须注册手机号码验证//从短信或电话,验证后进入HomeViewController(条件:当用户第一次安装应用程序时,它显示RegisterViewController )
2) 如果应用程序已经安装到 iPhone 并且用户还注册了手机号,那么用户现在打开相同的应用程序 initialViewController 必须是 HomeViewController
如何通过swift代码实现这个想法?
您必须更改 rootViewController
而不是 initialViewController。当用户验证并进入 NSUserDefaults
中的 HomeViewController 存储标志时,然后每次 AppDelegate
didFinishLaunchingWithOptions
检查用户是否已使用 NSUserDefaults
.
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
let nav = UINavigationController(rootViewController: homeViewController)
appdelegate.window!.rootViewController = nav
喜欢
var viewController: UIViewController!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if NSUserDefaults.standardUserDefaults().objectForKey("notRegistered") == nil
{
viewController = storyboard.instantiateViewControllerWithIdentifier("RegisterViewController")
}
else {
if NSUserDefaults.standardUserDefaults().objectForKey("notRegistered") as! String == "registred"
{
viewController = storyboard.instantiateViewControllerWithIdentifier("HomeViewController")
}
else
{
viewController = storyboard.instantiateViewControllerWithIdentifier("RegisterViewController")
}
// if you want to create the UINavigationController use this
let nav = UINavigationController(rootViewController: viewController)
self.window!.rootViewController = nav
else directly access use this
self.window!.rootViewController = viewController
self.window.makeKeyAndVisible()
// Override point for customization after application launch.
return true
}
成功后在注册页面保存赞
//Save
NSUserDefaults.standardUserDefaults().setObject("registred", forKey: "notRegistered")
在你的 appdelegate 中实现这个逻辑 class:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let isRegistered = NSUserDefaults.standardUserDefaults().boolForKey("ALLREADY_REGISTER")
if isRegistered == true{
// implement home view controller
let homeViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeVC") as! HomeViewController
self.window?.rootViewController = homeViewController
self.window?.makeKeyAndVisible()
}else{
// implement register view controller
let registerViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("RegisterVC") as! RegisterViewController
self.window?.rootViewController = registerViewController
self.window?.makeKeyAndVisible()
}
return true
}
然后当第一次注册成功完成时然后为键设置 bool 变量 true ALLREADY_REGISTER
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "ALLREADY_REGISTER")`