3

私はスタイルで表示UIAlertViewUIAlertViewStylePlainTextInputます。次に、次のように空のフィールドを検証しようとします。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    if (buttonIndex == 1) {
        if ([[alertView textFieldAtIndex:0].text length] > 0 ||
            [alertView textFieldAtIndex:0].text != nil ||
            [[alertView textFieldAtIndex:0].text isEqual:@""] == FALSE)
        {
            NSLog(@"error");
        }
        else
        {
            [self postToServer];
        }
    } else {
        //close alertview
    }
}

しかし、テキストフィールドが空でなくてもログにエラーメッセージが表示されます。

4

3 に答える 3

2

これは、あなたのifステートメントが含まれているためです

[[alertView textFieldAtIndex:0].text length] > 0

つまり、テキストがある場合、NSLog(@"error"); あなたの場合は次のようになります。

if ((![alertView textFieldAtIndex:0].text) || [[alertView textFieldAtIndex:0].text isEqual:@""])
{
      NSLog("error");
}
于 2012-06-22T12:38:44.663 に答える
2

以下を使用できます

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    if (buttonIndex == 1) {
        NSString *text = [alertView textFieldAtIndex:0].text;

        if([text isEqualToString:@""])
        {
            NSLog(@"empty");
        }
        else {
            NSLog(@"Not empty");
        }
    }
}
于 2012-06-22T12:39:05.550 に答える
1

まず、NSLog(@"error"); があります。テキストフィールドが長さ0より長い場合に真になるコードの領域。これはあなたが望むものとは反対のようです!!!

これを試して:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 1){
        if ([[alertView textFieldAtIndex:0].text length] > 0 ||                   
            [[alertView textFieldAtIndex:0].text isEqual:@""] == FALSE){
            [self postToServer];
        }else{
            NSLog(@"error");
        }
    }else{
        //close alertview
    }
}

この if ステートメントでは 0 より大きい長さは必要ないかもしれませんが、何らかの理由で不可視の文字が予想される場合は、それを保持しても問題ないかもしれません!!!

于 2012-06-22T12:40:13.160 に答える