#iphone #ios #drop-down-menu #uitextfield
#iPhone #iOS #выпадающее меню #uitextfield
Вопрос:
Есть ли простой способ создать выпадающее меню для UITextField, чтобы пользователь мог ввести пользовательскую запись или выбрать одну из списка?
Ответ №1:
Для выпадающего меню вы можете реализовать UITableView. Вы можете заполнить этот UITableView своим списком.
Просто объявите его в методе viewDidLoad вашего ViewController, а затем вы сможете показать или скрыть соответственно позже.
TableView = [[UITableView alloc]initWithFrame:CGRectMake(x,x,x,x) ];
TableView.delegate = self;
TableView.dataSource = self;
Добавляйте это в основной вид, когда пользователь нажимает на UITextField.
[self.view addSubView:TableView];
Если вы хотите, чтобы пользователь выбирал из заданного списка, лучшим вариантом будет UIButton вместо UITextField.
РЕДАКТИРОВАТЬ: я не заметил, что это совпадает с ответом выше.
Ответ №2:
Помимо uitextfield, вы можете отобразить кнопку со стрелкой вниз. И добавьте tableview такой же ширины, как текстовое поле, и высоты, какой вы хотите, и поместите его точно под текстовым полем и сохраните его скрытым. При нажатии на кнопку downarrow сделайте TableView.hidden = NO, чтобы он отображался в виде выпадающего списка, и снова в функции didSelectRowAtIndexPath в tableview сделайте его скрытым и поместите значение выбранной строки в текстовое поле. Вот и все.
Ответ №3:
То, что вы сказали, верно, и мы также можем использовать метод делегирования текстового поля для заполнения результата в табличном представлении вместо использования стрелки вниз. Когда пользователь вводит некоторый текст в текстовое поле, будет вызван метод делегирования текстового поля (didChangeText Delegate Method), с помощью которого вы можете обновить табличное представление. Нет необходимости добавлять кнопку со стрелкой выпадающего списка в текстовое поле.
Ответ №4:
Да, конечно! ниже приведен самый простой способ реализовать выпадающий список в UITextField
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource
{
//YOU JUST HAVE TO MAKE TEXTFIELD IN STORY BOARD AND LINK HERE
@IBOutlet weak var txt_gender: UITextField!
let gender = ["male","female","other"]
var pickerView = UIPickerView()
override func viewDidLoad()
{
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
txt_gender.inputView = pickerView
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return gender.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return gender[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
txt_gender.text = gender[row]
txt_gender.resignFirstResponder()
}
}
ПРИМЕЧАНИЕ: Вам просто нужно создать только UITextField в storyBoard и создать выход для этого текстового поля в вашем классе контроллера.
Ответ №5:
Просто сделайте это:
Добавляйте это в основной вид, когда пользователь нажимает на UITextField
.
[self.view addSubView:TableView];