gpt4 book ai didi

iphone - IF 语句在第一次运行时不检查条件

转载 作者:行者123 更新时间:2023-12-03 20:53:59 25 4
gpt4 key购买 nike

我是编程新手,我有一个应用程序,在启动时有一个登录 View ,并要求用户输入在整个程序中使用的名称。一旦他们输入姓名并登录,他们就会看到主菜单 View 。他们的名字使用 NSUserdefaults 保存。

这个想法是,他们只需要登录一次(或者如果注销则再次登录),因此他们应该只在第一次运行应用程序时看到登录 View ,但是一旦应用程序再次启动,它仍然会显示登录屏幕,并且您还必须按登录按钮两次才能进入主菜单。

我知道该应用程序正在存储详细信息,因为它是在该应用程序中使用的,但我不知道为什么。这是我的代码。如果有人可以提供帮助,我们将不胜感激。

-(IBAction)LogInButton:(id)sender
{
NSString *tempStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserName"];

if(tempStr.length==0)
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:Name.text forKey:@"UserName"];
[prefs synchronize];

LogInView *Logview = [[LogInView alloc] initWithNibName:@"LogInView" bundle:nil];
[self presentModalViewController:Logview animated:YES];
}
else
{
MainMenuView *mainview = [[MainMenuView alloc] initWithNibName:@"MainMenuView" bundle:nil];
[self presentModalViewController:mainview animated:YES];
}
}

最佳答案

根据你的描述判断你想要的是

  • viewDidLoad 上检查用户是否已登录
    • 如果是,则显示MainMenu
    • 如果否,则显示 LogInView

代码可能如下所示

- (void)viewDidLoad
{
[super viewDidLoad];

[self showCorrectController];
}

显示正确的 Controller 方法可能如下所示

- (void)showCorrectController
{
UIViewController *viewController = nil;

if ([self isLoggedIn]) {
viewController = [[MainMenuView alloc] init];
} else {
viewController = [[LogInView alloc] init];
}

[self presentModalViewController:viewController animated:YES];
[viewController release]; viewController = nil;
}

有一个名为 isLoggedIn 的便捷方法,如下所示

- (BOOL)isLoggedIn
{
// The double negation just means we get a boolean response
return !![[NSUserDefaults standardUserDefaults] objectForKey:@"UserName"];
}

现在将您的原始方法编辑为类似这样的内容

-(IBAction)LogInButton:(id)sender
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:Name.text forKey:@"UserName"];
[prefs synchronize];
[self showCorrectController];
}

可以做很多事情来整理这个问题,但这应该是让您继续前进的开始。

关于事物命名的警告。约定是方法名和变量名以小写字母开头。类和常量以大写字母开头。

关于iphone - IF 语句在第一次运行时不检查条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com