ios - swift 4中的自定义日期选择器标签
问题描述
我有一个集合视图,其中在标题中使用了一个标签。我想在单击此标签时显示一个日期选择器。已创建自定义日期选择器标签但是我不知道如何在我的控制器中使用此日期选择器标签目前单击日期标题标签时不显示日期选择器。
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() {
super.init(frame: CGRect.zero)
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)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override var canBecomeFirstResponder: Bool {
return true
}
@objc private func launchPicker() {
becomeFirstResponder()
}
@objc private func doneClick() {
resignFirstResponder()
}
}
自定义标题类:-
class DetailHeader : UICollectionReusableView
{
@IBOutlet weak var paramName : UILabel!
@IBOutlet weak var paramDate : DatePickerLabel!
}
我的视图控制器代码 -
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if (kind == UICollectionElementKindSectionHeader){
let sectionHeader = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerreuseIdentifier, for: indexPath) as! DetailHeader
sectionHeader.paramName.text = selectedParam?.name
sectionHeader.paramDate.text = dateToString(date: stringToDate(strdate: (detailList?.date)!))
sectionHeader.paramDate = DatePickerLabel()
return sectionHeader
}
}
解决方案
您尚未在DatePickerLabel
. isUserInteractionEnabled
默认值为false
。所以在你的覆盖它DatePickerLabel
override var isUserInteractionEnabled: Bool {
return true
}
你init
也永远不会被调用。因为在 Nib/Storyboard 的情况下,init(coder aDecoder: NSCoder)
被调用。将您的代码从 init 移至init(coder aDecoder: NSCoder)
,它将开始工作。
推荐阅读
- react-admin - 如何使用 react-admin 添加不在表单中的参考输入
- python - 无限滚动抓取页面时避免重复元素
- angular - 如何使用 loginWithEmail 捕获控制台错误?(角度 ts)
- python - API Rest 使用 GPU 加载了多个模型,但不是同时加载
- gcc - 是否可以从编译器(LLVM/GCC)生成堆栈槽位置信息?
- selenium - 预期条件失败:等待元素可点击:By.id(尝试 25 秒,间隔 500 毫秒)
- git - 在 git push origin main 之后,什么也没有发生
- google-apps-script - 获取#错误!和#NAME?当我在 Google Apps 脚本中使用 .setFormula () 时,在单元格表中
- cassandra - Cassandra更新列应该更新列值而不是ttl?
- r - 根据组和当前分类变量创建新的分类变量