从ViewController隐藏登录页面

时间:2016-02-04 22:20:00

标签: ios objective-c uiviewcontroller

我正在尝试在代码中添加逻辑,以便在用户已登录时隐藏登录页面。

if (loggedin)
{
    Push to MainViewController
}
else
{
    Show LoginViewController
}

我知道你可以在AppDelegate中执行此操作,但我希望在LoginViewController中添加此逻辑。 目前,ViewController中的逻辑显示登录页面一秒钟,然后推送到主页面。有没有办法完全看不到登录页面?

4 个答案:

答案 0 :(得分:1)

我不知道它是否完全符合您的需求,但在一个应用程序中我做了相反的事情: 我检查一个viewController(主页面),如果用户已经登录,如果不是我在viewDidLoad方法中显示这样的登录页面:

[self performSelector:@selector(showFirstTimeLogin) withObject:nil afterDelay:0.0];

我把它放在viewDidLoad中,所以你不会看到"主视图控制器"。 我希望它可以提供帮助!

答案 1 :(得分:1)

您可以在App Delegate

中查看此内容

在应用程序中,didFinishLaunchingWithOptions添加此

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

UIViewController *viewController;

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if([defaults objectForKey:@"email"]!=nil&&[defaults objectForKey:@"password"]!=nil)
{
 viewController = [storyboard instantiateViewControllerWithIdentifier:@"RevealVC"];
}

else
{
 viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
}

self.window.rootViewController=viewController;

答案 2 :(得分:0)

  1. 尝试在viewdidload中添加此逻辑,甚至在调用它的超级之前它可能有效但我无法确定。

  2. 您可以通过添加黑色视图控制器来尝试更好的技巧,如果他已登录则处理此逻辑如果不显示登录屏幕并且在检查使用将具有黑屏时进入主屏幕认为应用程序正在加载它将存在第二个

  3. 从软件设计的角度来看,具有这种逻辑的App委托是不好的行为

    希望这个答案能帮助你好运:)

答案 3 :(得分:0)

这就是我所做的......不是在登录或登录页面上启动用户,而是按照我总是命名为" RouterViewController"启动它们,我运行需要的逻辑来计算用户应该去哪里"路由"并使用此库:https://github.com/callumboddy/CBZSplashView显示一个漂亮的小动画,以便用户实际上是一个平滑的过程。