#ios #swift
#iOS #swift
Вопрос:
Если у меня есть два пользовательских подкласса UITextField, например
Class AlphaField: UITextField {
self.keyboardType = UIKeyboardType.alphabet
}
Class NumberField: UITextField {
self.keyboardType = UIKeyboardType.numberPad
}
Могу ли я затем назначить один из этих типов UITextField на основе инструкции в viewDidLoad? Например, что-то вроде:
@IBOutlet weak var someTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
if someBool {
someTextField = AlphaField
} else {
someTextField = NumberField
}
}
Я должен добавить, что это всего лишь пример. У меня есть причина для использования подклассов вместо простого изменения UIKeyboardType.
Комментарии:
1. используйте
extension
вместо
Ответ №1:
Конечно, это сработает. Конечно, вам нужно правильно их инициализировать:
if someBool {
someTextField = AlphaField(frame: someRect)
} else {
someTextField = NumberField(frame: someRect)
}
self.view.addSubview(someTextField)
Это работает, поскольку someTextField
является a UITextField
и может указывать на любой подкласс UITextField
.
Пожалуйста, обратите внимание, что, поскольку вы создаете текстовое поле программно, нет причин создавать someTextField
выход.