直接转到已登录用户

时间:2016-02-26 08:14:39

标签: ios storyboard swift2 segue xcode7.1

我有一个loginViewController作为我的rootviewcontroller,然后是主屏幕,然后是其他屏幕。我的观点遵循push和pop方法。我想要的是,如果用户已经登录我的视图应该从主屏幕开始,否则从登录屏幕开始,如果我从主屏幕注销它应该返回到登录屏幕并且应该保持推送和弹出结构。我可以使用模态转换实现这一点,但我需要使用push和pop方法,这可能吗?目前我已经在我的appdelegate中检查了已登录的条件以设置rootview控制器,但如果我尝试注销它在我的导航控制器堆栈中不存在则会失败。

if !alreadyLoggedin
{
    let mainListVC = storyBoard.instantiateViewControllerWithIdentifier(“MainListViewController”)
    self.window!.rootViewController = mainListVC
}
else
{
    let loginVC = storyBoard.instantiateViewControllerWithIdentifier("ViewController")
    self.window!.rootViewController = loginVC
}

2 个答案:

答案 0 :(得分:1)

你需要使用。的AppDelegate

目标C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"LoginStatus"]) {
        UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginController"];
    }else{
        UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"RootView"];

    }

}

SWIFT - 我希望其正确

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

      //Using UserDefaults check already loggedin user or not
        if (!someStatus) {

            let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController
            self.presentViewController(vc, animated: true, completion: nil)

        }else{


            let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("loginViewController") as! UIViewController
            self.presentViewController(vc, animated: true, completion: nil)

        }

    }

答案 1 :(得分:1)

这是基本用例,请按照我的步骤进行操作。

  1. 在您的故事中创建带视图控制器的导航视图控制器。
  2. 选择导航视图控制器作为故事板中的初始视图控制器。
  3. 创建三个视图控制器 - InitialViewController,LoginViewController和MainViewController,并为所有视图控制器设置故事板ID。
  4. 为您创建示例项目。下载链接(https://www.dropbox.com/s/zk8x7ptg5mzmotk/test.zip?dl=0