У меня есть много текстовых полей, а при нажатии кнопки «Отправить» я хочу показать предупреждающее сообщение, содержащее имена пустых текстовых полей, любой удобный способ сделать это без ввода длинных строк, если условия?Как показать, какое текстовое поле пуст при нажатии кнопки?
ответ
Есть два способа:
1) Если у вас есть выходы каждого текстового поля, то вы можете проверить с помощью, если-иначе, как
if (self.textField.text.length > 0) {
NSLog(@"textField is not empty");
}
2) Вы можете получить все подвидов в массиве, вызвав метод subviews
. Таким образом, вы можете сделать метод с BOOL что-то типа возвращаемого значения, как,
-(BOOL)checkTextFieldIsEmpty{
NSArray *arr = [self.view subviews];
for (int i = 0; i < arr.count; i++) {
if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {
UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];
if (tempTextField.text.length >0) {
NSLog(@"textfield is not empty");
}
else{
NSLog(@"textfield is empty");
return NO;
}
}
}
return YES;
}
Затем вы можете вызвать этот метод на кнопку отправить щелчок. Если какое-либо текстовое поле пустое, оно вернет NO
еще YES
. Если вы получите Да, то идите дальше.
Update:
Если вы хотите, чтобы показать пустой список TextField на alertview, то вы можете сделать что-то подобное,
-(void)checkTextFieldIsEmpty{
NSArray *arr = [self.view subviews];
NSString *emptyTextFieldName = [[NSString alloc]init];
for (int i = 0; i < arr.count; i++) {
if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {
UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];
if (tempTextField.text.length >0) {
NSLog(@"textfield is not empty");
}
else{
NSLog(@"textfield is empty");
emptyTextFieldName = [emptyTextFieldName stringByAppendingString:[NSString stringWithFormat:@"%@, ",tempTextField.placeholder]];
}
}
}
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Empty TextFiel" message:emptyTextFieldName delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
Не может ли быть так же просто, как показано ниже?
NSString *errorMessage = @"Please fill data for below fields.";
int isError = 0;
if (postalCode.text.length==0) {
errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Postal Code"];
isError++;
}
if (industry.text.length==0) {
errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Industry"];
isError++;
}
// now do these steps for all fields.
if (isError>=1) {
// show alert with errorMessage
// also if you specify how many fields are missed, you can use isError variable
}
Существует два подхода, которые вы можете предпринять, в зависимости от того, что вы считаете именем.
1) Если текст заполнителя, показанный на скриншоте, является именем или находится достаточно близко к желаемому имени, вы можете просто использовать его. Перебирайте текстовые поля, пока не найдете пустой, а затем покажите предупреждение на основе его текста-заполнителя.
NSArray *textfields = @[
self.textfield1,
self.textfield2,
];
for (UITextField *tf in textfields) {
if (tf.text.length == 0) {
// Show alert with tf.placeholder
break;
}
}
2) Если вам нужны конкретные имена, вы можете создать словарь, который отображает имена их TextFields. Затем вы перебираете словарь, ища соответствующее текстовое поле.
NSDictionary<NSString *, UITextField *> *textfieldNameMap = @{
@"Name 1" : self.textfield1,
@"Name 2" : self.textfield2,
};
[textfieldNameMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSString *name = (NSString *)key;
UITextField *tf = (UITextField *)obj;
if (tf.text.length == 0) {
// Show alert using name
*stop = YES;
}
}
Обратите внимание, что словарь не может использовать UITextField
в качестве ключа, потому что класс не соответствует NSCopying
. Также обратите внимание, что порядок, в котором текстовые поля будут найдены, не является детерминированным.
You can use this code for every text field of view controller in the button action block. Something like this -
@IBAction func SubmitButtonAction(sender: UIButton)
{
if (textField.text.isEmpty)
{
let alert = UIAlertView()
alert.title = "No Text"
alert.message = "Please Enter Text In The Box"
alert.addButtonWithTitle("Ok")
alert.show()
}
}
Позже я узнал, что сейчас нет способа сделать это.
1) Это не ответ на ваш вопрос. 2) Это просто неправда. Это может быть сделано. – rmaddy
- 1. Показать текстовое поле при нажатии кнопки
- 2. Как добавить текстовое поле при нажатии кнопки?
- 3. Как включить текстовое поле при нажатии кнопки?
- 4. Как очистить текстовое поле при нажатии кнопки
- 5. добавить текстовое поле и текстовое поле при нажатии кнопки
- 6. Принесите текстовое поле при нажатии кнопки
- 7. Добавить текстовое поле при нажатии кнопки Добавить
- 8. Новое текстовое поле при нажатии кнопки
- 9. Видимое текстовое поле при нажатии
- 10. Как включить/отключить текстовое поле при нажатии кнопки
- 11. Подтвердите расширение кнопки, если текстовое поле пуст
- 12. добавить текстовое поле при нажатии кнопки в sproutcore
- 13. Как удалить конкретное текстовое поле при нажатии определенной кнопки?
- 14. Как добавить новое текстовое поле при нажатии кнопки в jQuery?
- 15. Как добавить новое текстовое поле при нажатии кнопки
- 16. Как сфокусировать следующее текстовое поле при нажатии кнопки?
- 17. Как удалить текстовое поле при нажатии кнопки в angularjs?
- 18. Как добавить новое текстовое поле при нажатии кнопки?
- 19. как добавить динамическое текстовое поле при нажатии кнопки
- 20. Как автозаполнять текстовое поле при нажатии клавиши
- 21. JQuery если поле пуст, при нажатии кнопки отключить его
- 22. Показать следующее имя при нажатии кнопки
- 23. Отключить кнопки, если текстовое поле пуст в настраиваемом диалоговом окне
- 24. Как изменить текстовое положение кнопки при нажатии?
- 25. Показать текст при нажатии кнопки
- 26. открыть текстовое поле при нажатии кнопки с помощью ajax
- 27. генерировать текстовое поле при нажатии кнопки в swift
- 28. Показать (Слайд) текстовое поле при нажатии на что-то
- 29. Нужно использовать функцию javascript для определения того, какое текстовое поле используется при нажатии кнопки сохранения.
- 30. Javascript, создающий новое текстовое поле при нажатии кнопки
Вниз голосов, так как у этого вопроса нет конкретного ответа. – BangOperator
@AbhinandanPratap Нет серийного голосования. Ни один из ответов на самом деле не делает то, что задают. OP хочет оповещение, которое отображает список всех пустых полей. И кроме того (но не причина каких-либо отрицательных ответов на ответы), никто не должен публиковать ответ на такой плохой вопрос. Ответы на плохие вопросы просто поощряют более плохие вопросы. – rmaddy
Я думаю, что если харшилу или другому нужно научиться объективному c или другому методу, они должны приложить свои усилия, чтобы найти простое решение вместо того, чтобы задавать этим детям такие вопросы. – vaibhav