2016-02-26 76 views
1

我有一个loginViewController作为我的rootviewcontroller其次是主屏幕,然后其他屏幕。我的观点遵循推动和流行的方法。我想要的是,如果一个用户已经登录了我的视图,应该从主屏幕开始,否则从登录屏幕开始,如果我从主屏幕登出,它应该回到登录屏幕,并且应该保持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 
} 
+0

请问您可以显示注销码吗? –

+0

注销我只是使用self.navigationController?popViewControllerAnimated(true) – Gamerlegend

+0

来弹出currentviewcontroller你应该写let storyboard = UIStoryboard(name:“MyStoryboardName”,bundle:nil) let vc = storyboard.instantiateViewControllerWithIdentifier(“loginViewController” )as! UIViewController self.presentViewController(vc,animated:true,completion:nil)在注销 –

回答

1

它的基本使用的情况下,请按照我的步骤。

  1. 在您的故事中创建具有视图控制器的导航视图控制器。
  2. 选择导航视图控制器作为故事板中的初始视图控制器。
  3. 创建三个视图控制器 - InitialViewController,LoginViewController和MainViewController并为所有视图控制器设置storyboard id。

为您创建示例项目。下载链接(https://www.dropbox.com/s/zk8x7ptg5mzmotk/test.zip?dl=0

+0

是的,这将工作,但我需要保持我的推动和流行动画以及。所以如果我启用动画,我会看到initialviewcontroller出现在两者之间。 – Gamerlegend

+0

尝试下载它[示例](https://www.dropbox.com/s/zk8x7ptg5mzmotk/test.zip?dl=0)..我已经添加了动画。 –

+0

你注销的代码是什么?登录视图(和所有数据/凭证)是否有可能通过deinit(如此丢失)?如果你放置一个打印语句,你应该能够确认视图的状态。理论上,您可以使用dismissViewController返回到您的登录屏幕... – goggelj

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) 

     } 

    } 
+0

这和我所做的一样,当我注销它不会去登录视图 – Gamerlegend

相关问题