当用户已经登录到IOS时,跳过登录视图控制器

当用户已经登录到IOS时,跳过登录视图控制器,ios,objective-c,Ios,Objective C,我有一个主屏幕,上面有一个按钮,当我们点击一个按钮时,它会显示一个登录屏幕,用户通过电话号码登录,如果用户在屏幕上显示按钮之前输入未注册的号码,则转到注册表单屏幕,现在我正在尝试,如果用户已经登录,那么无论何时打开应用程序,都不应该看到登录屏幕,它应该直接转到登录后的下一个屏幕,如果用户之前没有登录,那么它应该显示登录屏幕。我的密码是 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(N

我有一个主屏幕,上面有一个按钮,当我们点击一个按钮时,它会显示一个登录屏幕,用户通过电话号码登录,如果用户在屏幕上显示按钮之前输入未注册的号码,则转到注册表单屏幕,现在我正在尝试,如果用户已经登录,那么无论何时打开应用程序,都不应该看到登录屏幕,它应该直接转到登录后的下一个屏幕,如果用户之前没有登录,那么它应该显示登录屏幕。我的密码是

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

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

if([[NSUserDefaults standardUserDefaults] valueForKey:@"login"])
{
    // So, here user already login then set your root view controller, let's say `SecondViewController``
    HomeViewController *secondViewController = [storyBoard instantiateViewControllerWithIdentifier:@"HomeViewController"];
    // then set your root view controller
    self.window.rootViewController = secondViewController;
} else
{
    // It means you need to your root view controller is your login view controller, so let's create it
    RegisterViewController  *loginViewController= [storyBoard instantiateViewControllerWithIdentifier:@"RegisterD"];
    self.window.rootViewController = loginViewController;
}
// Override point for customization after application launch.
return YES;

}

您可以使用NSUserDefault设置当前用户登录状态。 在下一次应用程序启动时,在home view controller上,当您单击该按钮时,在加载登录屏幕之前,检查用户登录状态。如果为真,则直接加载下一个屏幕,如果不是,则重定向到登录屏幕

func loginButtonOnHomeScreen(sender:UIButton){
  let loginState = UserDefaults.standard.bool(forKey: "Login")
        var VC:UIViewController
        if loginState == true{
             VC = (self.storyboard?.instantiateViewController(withIdentifier: "NextScreen"))!
        }else{
            VC = (self.storyboard?.instantiateViewController(withIdentifier: "LoginScreen"))!
        }
        self.navigationController?.pushViewController(VC, animated: true)
}
希望这会有所帮助

编辑 n目标C

 BOOL loginState = [[NSUserDefaults  standardUserDefaults] boolForKey:@"Login"];
    UIViewController *VC;
    if (loginState == true){
        VC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextScreen"];
    }else{
        VC = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginScreen"];
    }
    [self.navigationController pushViewController:VC animated:true];

当用户登录/注册成功设置时

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"login"];
当用户当时注销时,从NSUserDefaults中删除或设置为false

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"login"];

您可以在appDelegate文件或任何其他合适的屏幕中检查用户是否已登录

if([[NSUserDefaults standardUserDefaults] boolForKey:@"login"])
{
    //YES Already Login
    NextController *nextVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextController"];
}
else
{
    //NOT Login
    LoginController *loginVC = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginController"];
}

将boolforkey insted值用作键

 [[NSUserDefaults standardUserDefaults] boolForKey:@"login"]
您有2个ViewController(LoginVC和HomeVC), 首先在“LoginVC”中编写以下代码

在HomeVC中编写第二个代码(登录后)


您在“登录”中设置了什么?表示设置了哪个值?您可以存储状态,即用户是否登录
NSUserDefaults
,并相应重定向。如果用户登录,则在“登录”中,如果用户要注册,则在“注册”中。它的默认值@NiravKotechaHow我可以重定向它吗@Priyal@Oneeb问题解决了吗?当用户登录时,我如何直接从家转到下一个屏幕,通过ur代码,当用户登录时,登录屏幕是否会跳过@Nirav Kotechayou可以使用segue直接从主控制器进入下一屏幕<代码>[self-PerformsgueWithIdentifier:@“segueToNextController”发送方:self]“segueToNextController”是标识符,所以在情节提要中也给出了相同的名称。好的,让我试试@NiravKotechaNo兄弟它不会带我进入第二个屏幕它会一次又一次地进入登录屏幕@Nirav Kotecha您是否编写了
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@“login”]在你的控制器中?我使用的是objective-c。你能用objective-c写这个代码吗@KavyaKavitaI在上面的答案中添加了客观的C版本。让我试试@Kabyakavita我们必须在Appdelegate.m?@KavyaKavitaIf中写入任何内容。在这两种情况下,您都希望主屏幕作为您的登录屏幕,则不需要。删除这些条件并仅使用此HomeViewController*secondViewController=[storyBoard InstanceViewController WithiIdentifier:@“HomeViewController”];//然后设置根视图控制器self.window.rootViewController=secondViewController;
 [[NSUserDefaults standardUserDefaults] boolForKey:@"login"]
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]){

   nslog(@"Success"};
 }
else{
    nslog(@"Login Agin")
 }
-(void)viewWillAppear:(BOOL)animated{

  [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"loggedIn"];
}