#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. это действительно должен быть комментарий, поэтому, пожалуйста, объясните с помощью кода, как вы это сделаете