繁体   English   中英

Xcode目标C中的一致登录屏幕

[英]Consistent Login screen in Xcode Objective C

我设法创建了一个初始登录屏幕,该屏幕在应用程序首次启动时显示。 然后,我将用户信息保存到NSUserDefaults(名字,姓氏,年龄等)。 问题是,如果用户留下空白信息,然后重新启动应用程序,则初始登录屏幕将不再显示。 我如何才能在首次启动我的应用程序时显示此登录屏幕并停留在该屏幕上,直到用户填写适当的信息为止?

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

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
    UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
    MainViewController *firstVC = [story instantiateViewControllerWithIdentifier:@"FirstViewController"];
    self.window.rootViewController =firstVC;
}
else
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // This is the first launch ever
    UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
    GreetingsViewController *greetingsVC = [story instantiateViewControllerWithIdentifier:@"GreetingsViewController"];
    self.window.rootViewController =greetingsVC;
}}

这是我在Appdelegate.m中用来设置登录屏幕的代码。 如果有人可以为我提供一些代码,以便知道该怎么做或如何使我的登录屏幕按我希望的方式工作,那真是太好了……干杯。

* PS我设置了登录屏幕,以将用户信息从UITextField保存到NSUserDefaults中。

您应该实现登录名/密码验证器。 您将在保存之前测试登录名/密码值。 如果为null,则不允许该应用显示第二个屏幕。

不要使用HasLaunchedOnce作为键,而要使用您保存的用户名字。 如果长度为0,则显示登录屏幕。

  1. 建议您不要检查用户名等的存在,然后基于此决定,而不是打开“ HasLaunchedOnce”键。
  2. 请记住,用户默认值不是存储用户名,名称和密码等敏感信息的安全场所。 这些无需任何技术技能就可以很容易地从设备中提取。 使用钥匙扣这种类型的信息或包装周围

您添加了一个名为hasWrittenAllData的标志,当输入所有数据并且用户按下下一步按钮时,该标志将设置为yes并在NSUserDefaults中。 之后,请检查该标志是否存在并将其设置为yes。
用户名和密码也保存在钥匙串中。 为了爱冥王星(地球),请不要将它们保存在NSUserDefaults中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM