Я хочу добавить текстовое поле, нажав на кнопку

#ios #swift #xcode

#iOS #swift #xcode

Вопрос:

Я уже поместил кнопку и текстовое поле на раскадровку. Я хочу поместить под ним новое текстовое поле с помощью кода, но я не знаю как. У вас есть лучший способ? xcode12.2

 @IBOutlet weak var kgTextField1: UITextField!
    @IBOutlet weak var repTextField1: UITextField!
    @IBOutlet weak var repTextField2: UITextField!
    @IBOutlet weak var repTextField3: UITextField!
    
    var addKgTextField : UITextField = UITextField()
 
 override func viewDidLoad() {
        super.viewDidLoad()
addKgTextField.frame = CGRect(x: 20, y: 100, width: 60, height: 34)
    }
 
 @IBAction func didTapAddSetButton(_ sender: Any) {
        self.view.addSubview(addKgTextField)
        self.view.reloadInputViews()
    }
 

Комментарии:

1. Если это только одно дополнительное текстовое поле, вы можете создать его в раскадровке как скрытое и отменить его скрытие при нажатии кнопки.

2. Я не говорил. Есть много текстовых полей, которые я хотел бы добавить. Поэтому я хочу сделать это с помощью кода.

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

4. Спасибо за ваш вежливый ответ. Я не знал, как это сделать. Однако количество не ограничено. Я хочу много текстовых полей.

Ответ №1:

Этот код решит вашу проблему.

 private var textFiled : UITextField{
    let field = UITextField()
    field.placeholder = "Email Address..."
    field.returnKeyType = .next
    field.leftViewMode = .always
    field.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 0))
    field.autocapitalizationType = .none
    field.autocorrectionType = .no
    field.layer.masksToBounds = true
    field.layer.cornerRadius = Constants.cornerRadius
    field.backgroundColor = .secondarySystemBackground
    field.layer.borderWidth = 1.0
    field.layer.borderColor = UIColor.secondaryLabel.cgColor
    return field
}

var lastTextFiledFrame: CGFloat = CGFloat.zero

@IBAction func didTapAddSetButton(_ sender: Any) {
    let newTextFiled = self.textFiled
    view.addSubview(newTextFiled)
    newTextFiled.frame = CGRect(x: 20, y: registerButton.bottom 10   self.lastTextFiledFrame, width: view.width-40, height: 52)
    self.lastTextFiledFrame  = newTextFiled.frame.height   10
}
 

Ответ №2:

Вы также можете добавить другое текстовое поле и изменить его видимость при нажатии кнопки.

Комментарии:

1. это действительно должен быть комментарий, поэтому, пожалуйста, объясните с помощью кода, как вы это сделаете