如果需要,我想显示登录对话和登录错误对话。
我使用UIAlertView来显示这些对话,但是在显示UIAlertView时,该过程一直在运行。
我在下面写了一段代码。现在NSUserDefaults没有保留这些值,所以我预计会显示登录对话框并等到按钮被点击。但是在运行时,会显示错误对话框,点击“确定”后会显示“登录”对话框。
我该如何解决这个问题?
提前致谢。
- (void)storeEvernote
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
evID = [defaults stringForKey:@"evID"];
evPW = [defaults stringForKey:@"evPW"];
NSLog(@"%@", evID);
if( evID == NULL || evPW == NULL )
{
login = true;
[self showLoginDialogue];
}
else
{
evernoteID = evID;
evernotePW = evPW;
}
if( evernoteID == NULL || evernotePW == NULL )
{
login = false;
[self showErrMessage];
return;
}
[self getEvernoteNotebooks];
}
- (void)showLoginDialogue
{
UIAlertView *loginDialogue = [[UIAlertView alloc] initWithTitle:@"Evernote Login" message:@"Enter your Evernote Info" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Login", nil];
loginDialogue.delegate = self;
loginDialogue.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[loginDialogue show];
}
- (void)showErrMessage
{
UIAlertView *loginalert = [[UIAlertView alloc] initWithTitle:@"Login Failure" message:@"Invalid ID & Password" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[loginalert show];
}
答案 0 :(得分:0)
第一次storeEvernote
方法运行时,evID
和evPW
为NULL
,因此第一个if
为真,它会显示LoginDialoge
然后它继续第二个if
,因为evernoteID
和evernotePW
仍然是NULL
所以第二个if
语句中的条件也是如此,所以它显示了errorMessage
。要解决此问题,请将第二个if
语句移至loginDialogue
ALSO ADD return;
的委托方法到第一个if
语句的末尾,例如:
- (void)storeEvernote
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
evID = [defaults stringForKey:@"evID"];
evPW = [defaults stringForKey:@"evPW"];
NSLog(@"%@", evID);
if( evID == NULL || evPW == NULL )
{
login = true;
[self showLoginDialogue];
return;
}
else
{
evernoteID = evID;
evernotePW = evPW;
}
[self getEvernoteNotebooks];
}
//The login dialoge delegate method:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//Process user input
...
if( evernoteID == NULL || evernotePW == NULL )
{
login = false;
[self showErrMessage];
return;
}
[self getEvernoteNotebooks];
}