Проверка для текстового поля в uialertview
Я показываю UIAlertView
с UIAlertViewStylePlainTextInput
стиль. Затем я пытаюсь проверить пустое поле следующим образом:
-(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
}
}
Но он показывает мне сообщение об ошибке в журнале, даже если текстовое поле не пустое.
3 ответа
Решение
Это потому что ваш if
заявление содержит
[[alertView textFieldAtIndex:0].text length] > 0
что означает, что если есть текст, то NSLog(@"error");
Ваш if должен быть:
if ((![alertView textFieldAtIndex:0].text) || [[alertView textFieldAtIndex:0].text isEqual:@""])
{
NSLog("error");
}
Вы можете использовать следующее
-(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");
}
}
}
Прежде всего, у вас есть 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, но если вы каким-то образом ожидаете невидимых символов, то, возможно, все будет в порядке, чтобы сохранить его!!!