2016-03-29 113 views
2

我正在开发具有初始视图控制器作为“导航控制器”的应用程序。该应用程序包含2个想法来实施。如何通过swift代码更改初始视图控制器

1)从RegisterViewController,用户必须注册手机号码,验证//从短信或通话,验证后进入HomeViewController(条件:当用户第一次安装应用程序时,它显示RegisterViewController) enter image description here

2)如果应用程序已经得到安装到iPhone,并且用户还注册了手机号码,然后用户打开相同的应用程序现在initialViewController必须HomeViewController

enter image description here

如何通过swift代码实现这个想法?

+0

有太多的方式来实现这一点。 1.添加一个模型视图控制器在HomeView中注册。在HomeView的viewwillApper检查登录。如果“否”显示您的注册屏幕。 2.如果您不想添加任何ModelView控制器。然后在RegitrationView的ViewWillApper设置[self.navigationCOntroller pushtoYourHomeScreen] –

+0

使用NSUSerdefault和chek条件 –

回答

2

在你的AppDelegate类实现这个逻辑之后:

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 
    } 

当第一次然后注册完成成功然后设置布尔变量真正的密钥ALLREADY_REGISTER

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "ALLREADY_REGISTER")` 
+0

我如何使rootViewController作为导航控制器,因为现在我设置了作为初始视图控制器 –

0

您必须更改rootViewController而不是initialViewController。当用户验证并进入NSUserDefaults的HomeViewController存储标志。然后AppDelegatedidFinishLaunchingWithOptions检查用户已使用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 
1

不喜欢

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") 
+0

我不是家庭的快速,如果你需要支持,我一定会帮助你ü –

相关问题