Как удалить текст из всех TextField ? !

swift

#1

Имеется много TextField и удалять текст, как TextField = “” такое себе.
Хотел узнать, может кто знает, способ как удалить всё и сразу.
Думал, может создать массив куда буду складывать TextField, и одной командой их подчищать. Получилось следующее:
editArray2[1].text = “” - Вот так всё работает

А когда пытаюсь прописать все индексы выходит ошибка:
editArray2[0…1].text = “” - Value of type ‘ArraySlice’ has no member ‘text’

Помогите, пожалуйста :confused:


#2

Это можно сделать в IB создать массив уатлетов (коллекцию) и в коде появится отдельный IBOutlet, который будет содержать в себе ссылки на все присвоенные к нему элементы. Только элементы должны быть одного типа.
В коде тогда можно будет сделать так

textFieldCollection.each { field in
   field.text = ""
}

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


#3

Сделай цикл по элементам View и проверяй если он является UITextField то очищай его


#4

Я бы так не советовал делать, если UI перегружен элементами, так можно приложение застопить.
Если нужно иметь с коллекцией элементов, есть 2 варианта:

  1. Создать аутлет и к нему через IB прикреплять нужные элементы
  2. Если элементы добавляются динамически в коде, хватит обычного массива с типом нужных элементов

А способ перебора и операций с элементами в обеих случаях одинаковый.


#5

Cпасибо Большое. Ваш ответ очень помог. Конечно если Вам не сложно ответить на вопрос по этой теме:
“Можно ли создать коллекцию не перетаскивая по одному ползунку с Storybord’a в код?” И как Вы считаете ничего страшного, если на одной форме могут находится более 100 TextField’ов? (Не сильно ли будет нагружать устройство?)


#6

Такое кол-во элементов лучше было бы создавать програмно. Для более автономного способа нужно будет написать генератор из модели. В Swift 4.2 вроде как раз можно пробежаться по всем свойствам модели и на их основе генерировать нужное поле, и вставлять его во view.