Ios 如何仅在应用程序启动时第一次显示登录屏幕

Ios 如何仅在应用程序启动时第一次显示登录屏幕,ios,ipad,launching-application,Ios,Ipad,Launching Application,我想在应用程序第一次启动其他wise应用程序时启动登录屏幕,但问题是它再次进入登录屏幕 下面是我在didFininsh中使用的代码 我希望用户只在第一次显示go to login屏幕,下次它应该显示splitViewController [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YE

我想在应用程序第一次启动其他wise应用程序时启动登录屏幕,但问题是它再次进入登录屏幕

下面是我在didFininsh中使用的代码

我希望用户只在第一次显示go to login屏幕,下次它应该显示splitViewController

     [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {



    [self.window addSubview:[splitViewController view]];

    LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    targetController.modalPresentationStyle = UIModalPresentationFullScreen;


    [self.splitViewController presentViewController:targetController animated:YES completion:nil];

    }

else {


    [self.window addSubview:[splitViewController view]];

}


// my comment[window addSubview:splitViewController.view];
[window makeKeyAndVisible];


return YES;
试试这个

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];

    [self.window addSubview:[splitViewController view]];

    LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    targetController.modalPresentationStyle = UIModalPresentationFullScreen;


    [self.splitViewController presentViewController:targetController animated:YES completion:nil];

    }

else {


    [self.window addSubview:[splitViewController view]];

}

若您只想显示一次登录屏幕,那个么您需要数据库的帮助

我给出了如何使用数据库表的简单示例

假设您的表名为“Login”

在4字段中添加登录表

id-汽车公司
用户名-文本
密码-文本
状态-文本,默认为0

拿两个ViewController

1) 登录查看控制器
2) HomeViewController

     [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {



    [self.window addSubview:[splitViewController view]];

    LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    targetController.modalPresentationStyle = UIModalPresentationFullScreen;


    [self.splitViewController presentViewController:targetController animated:YES completion:nil];

    }

else {


    [self.window addSubview:[splitViewController view]];

}


// my comment[window addSubview:splitViewController.view];
[window makeKeyAndVisible];


return YES;
应用程序中:使用选项完成启动

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

     /// here you need to get status from "Login" table 

     if (status == 0)
     {
        /// code of initialize LoginViewController
       self.window.rootViewController = self.LoginViewController;
     }
     else if (status == 1)
     {
          /// code of initialize HomeViewController
       self.window.rootViewController = self.HomeViewController;     
     }
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
在上面的代码中,当您启动应用程序时。当时第一次从登录表中检查状态的条件

第一次得到状态=0时,因为我们将状态的默认值设置为0,所以这里

self.window.rootViewController = self.LoginViewController;
此时,在登录屏幕上输入用户名和密码。 输入用户名和密码后,单击登录按钮,此时还需要对您的“登录”状态进行更新查询,表为1

当您再次启动应用程序时,您的ger状态为1

self.window.rootViewController = self.HomeViewController;     

因此,您不能再次显示登录屏幕。

您应该在需要跳过的控制器内实现viewDidAppear方法,然后在viewDidAppear方法中,依次执行要向用户发送的视图,如下所示:

- (void)viewDidAppear:(BOOL)animated {

  //if user is already logged in then skip to welcome view
  //implement your login method here

  if ([self isUserLoggedIn]) {
    [self performSegueWithIdentifier:@"WelcomeTo" sender:self];
  }

}

对于ios7

签出,我认为您必须将该代码写入视图。谢谢,它可以工作,但我希望当用户输入用户名时,它会在appDelegate.userName中通信,那么我如何将其存储在NSUserDefaults中,以便下次打开应用程序时,它应该在userName[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@“firstLaunch”]中取值;成功登录后,您只需设置用户默认值。我可以在LoginViewController中设置用户默认值。成功登录后&从app delegate中删除该代码。