UITextField с выпадающим меню для iPhone

#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];