0

如有必要,我想显示登录对话框和登录错误对话框。

我使用 UIAlertView 来显示这些对话,但在显示 UIAlertView 时进程会继续运行。

我在下面写了一个代码。现在 NSUserDefaults 不保留这些值,所以我预计会显示登录对话框并等到按钮被点击。

但是当运行它时,会显示错误对话框,然后点击 OK 后,会显示登录对话框。

我怎样才能解决这个问题?

提前致谢。

- (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];
}
4

1 回答 1

0

storeEvernote方法第一次运行时evID,第一个为真,它显示then 它继续到第二个,因为和evPW仍然如此,第二个语句中的条件也为真,所以它显示. 要解决此问题,请将第二个语句移动到ALSO ADD的委托方法到第一个语句的末尾,例如:NULLifLoginDialogeifevernoteIDevernotePWNULLiferrorMessageifloginDialoguereturn;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];
}
于 2012-06-23T04:30:59.567 回答