【发布时间】:2018-10-13 03:36:31
【问题描述】:
我创建了一个 UILabel 的子类,基于此处的示例:UILabel doesn't show inputView。我正在尝试在子类 UITableViewCell 的类中创建标签的实例。我遇到的问题是,要创建 DatePickerLabel 的实例,它需要一个 NSCoder。
let dp = DatePickerLabel(coder: NSCoder)
我的类中有这个子类 UITableViewCell 但它似乎从未被触发,当我运行它时导致一个空指针(我尝试使用一个变量,然后在这段代码中分配它):
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
print("triggered")
}
非常感谢任何帮助,DatePickerLabel 如下所示!
class DatePickerLabel: UILabel {
private let _inputView: UIView? = {
let picker = UIDatePicker()
return picker
}()
private let _inputAccessoryToolbar: UIToolbar = {
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.sizeToFit()
return toolBar
}()
override var inputView: UIView? {
return _inputView
}
override var inputAccessoryView: UIView? {
return _inputAccessoryToolbar
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(doneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
_inputAccessoryToolbar.setItems([ spaceButton, doneButton], animated: false)
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(launchPicker))
self.addGestureRecognizer(tapRecognizer)
}
override var canBecomeFirstResponder: Bool {
return true
}
@objc private func launchPicker() {
becomeFirstResponder()
}
@objc private func doneClick() {
resignFirstResponder()
}
}
干杯!
【问题讨论】:
标签: ios swift uitableview uilabel