2010-01-19 3 views
0

У меня есть простой калькулятор, который работает, но моя проблема в том, что пользователь не вводит какие-либо данные в поля, которые он все еще вычисляет. Я думал, что мог бы сделать следующее:Если TextFields пуст, сделайте это для iPhone

if (txtUserName.text == nil || txtUserName2.text == nil || txtUserName3.text == nil || txtUserName4.text == nil || txtUserName5.text == nil) 
    { 
     //error message 
     lblUserTypedName.text [email protected]"Error - No Field Input"; 
    } 
    else 
    { 
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk]; 
    } 

Но это совсем не работает. Любая помощь, позволяющая мне знать, что мне не хватает здесь, будет очень признательна. Я хотел бы использовать || поэтому даже если они вводят все поля, кроме одного, это все равно поймает его.

+0

Хотите, чтобы это предотвратить вычисление или предотвратить показ расчет? –

+0

в зависимости от того, что на данный момент проще: – HollerTrain

ответ

1

Я хотел бы предложить, используя метод длин NSString, чтобы определить, есть ли какой-либо вход. так что вы могли бы использовать

if ([txtUserName.text length]== 0 || [txtUserName2.text length]== 0 || [txtUserName3.text length]== 0 || [txtUserName4.text length]== 0 || [txtUserName5.text length]== 0) 
{ 
    //error message 
    lblUserTypedName.text [email protected]"Error - No Field Input"; 
} 
else 
{ 
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk]; 
} 

Это будет работать и для текста имущества, ноля (это значение по умолчанию в соответствии с документацией) и свойством текста является пустой строкой.

Также обратите внимание, что это все еще выполняет расчет, оно просто не отображает его. Если вы хотите предотвратить вычисление, вам нужно переместить код для вычисления ultimate_risk в блок else.

+0

, когда я пытаюсь использовать этот код, он вызывает симулятор, но останавливается непосредственно в инструкции if, которую вы использовали выше. Мысли? (http://screencast.com/t/NDJjYjE3) – HollerTrain

+0

спасибо, что это работает отлично. это гораздо лучшее решение – HollerTrain

4

вы собираетесь сделать что-то вроде [txtUserName.text isEqualToString:@""], потому что пустая строка не совпадает с нулевым объектом. Вы также можете удалить пробелы из строк, прежде чем проверять, пусты ли они, в зависимости от того, что делает ваше приложение. Я бы разделил пробелы в методах делегатов редактирования UITextField, а не в этом методе.

РЕДАКТИРОВАТЬ:

if ([txtUserName.text isEqualToString:@""] || [txtUserName2.text isEqualToString:@""] || [txtUserName3.text isEqualToString:@""] || [txtUserName4.text isEqualToString:@""] || [txtUserName5.text isEqualToString:@""]) 
{ 
    //error message 
    lblUserTypedName.text [email protected]"Error - No Field Input"; 
} 
else 
{ 
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk]; 
} 
+0

, но как бы я мог поместить это в if/else? becuz, если у пользователя есть входные данные, которые я хочу рассчитать, если они не хотят, чтобы он не вычислял. – HollerTrain

+0

Просто замените 'txtUserName.text == nil' на' [txtUserName.text isEqualToString: @ ""] '. – kiamlaluno

+0

добавил полный пример кода к моему ответу. Также работает техника длины строки bodnarbm. –

0

Если вы хотите проверить более одной строки, вы можете сделать это

if([txtUserName.text isEqualToString:@""] || 
[txtUserName2.text isEqualToString:@""] || 
[txtUserName3.text isEqualToString:@""] || 
[txtUserName4.text isEqualToString:@""] || 
[txtUserName5.text isEqualToString:@""] 
) 
{ 
//error message 
    lblUserTypedName.text [email protected]"Error - No Field Input"; 
} 
else 
{ 
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk]; 
} 
Смежные вопросы