【发布时间】:2017-08-28 19:07:00
【问题描述】:
我有一个自定义的UIView 组件,它有一个UITextField、UIImageView 和另一个UIView。
我需要更改UITextField 的行为以在点击时显示UIDatePicker。这是我正在尝试执行的代码,但由于某种原因,datePicker 在被点击时没有打开:
class TextFieldWithFeedback : UIView {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var underlineView: UIView!
override func draw(_ rect: CGRect) {
let datePicker = UIDatePicker()
datePicker.datePickerMode = .date
self.textField.inputView = datePicker
}
}
当我在 ViewController(下面的代码)上使用相同的代码时,它起作用了:
override func viewDidLoad() {
super.viewDidLoad()
let datePicker = UIDatePicker()
datePicker.datePickerMode = .date
customView.textField.inputView = datePicker
}
现在,此解决方案有效,但并不理想,因为我有 8 个自定义视图,最好设置一次而不是 8 次。
我应该使用 View 类的哪个方法来设置 datePicker? 因为 draw 不起作用。
另外,当用户选择日期时,如何附加一个函数来修改我的UITextField 值?
【问题讨论】:
-
您需要保留日期选择器的参考
-
只需将其声明为视图控制器的属性
-
@LeoDabus 在 ViewController 上实例化 DatePicker 并将其设置在每个 customView 上?在draw方法上使用
-
不要为此滥用
draw!哦,恐怖,恐怖。 -
@matt 帮帮我,我应该使用哪一个:)
标签: swift swift3 uitextfield uikit uidatepicker