【发布时间】:2016-11-20 05:10:25
【问题描述】:
每当我单击日期选择器上方的行时,我的日期选择器都不会像应有的那样隐藏。相反,当我单击该行时,它只会永久突出显示为深灰色,这是您最初单击某些内容时的典型特征。为什么会这样?为什么我的 datePicker 不隐藏?
class TableViewController: UITableViewController {
@IBOutlet weak var detailLabel: UILabel!
@IBOutlet weak var datePicker: UIDatePicker!
private var datePickerHidden = false
override func viewDidLoad() {
super.viewDidLoad()
datePickerChanged()
self.tableView.backgroundColor = UIColor.lightGray
}
@IBAction func valueChanged(_ sender: UIDatePicker) {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
detailLabel.text = formatter.string(from:sender.date)
}
func datePickerChanged () {
detailLabel.text = DateFormatter.localizedString(from: datePicker.date, dateStyle: DateFormatter.Style.short, timeStyle: DateFormatter.Style.short)
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == 0 {
toggleDatepicker()
}
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
}
private func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if !datePickerHidden && indexPath.row == 1 {
return 0
}
else {
return 100
}
}
private func toggleDatepicker() {
datePickerHidden = !datePickerHidden
tableView.beginUpdates()
tableView.endUpdates()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}}
有什么建议吗?
【问题讨论】:
-
在
tableView.beginUpdates()之后移动datePickerHidden = !datePickerHidden。如果datePickerHidden用true初始化,检查它是否有效 -
我试过这个但没有运气
-
你是如何显示选择器的?单击 tableview 的第一行,则只会调用
toggleDatepicker。你的代码是这样写的。你是把选择器藏在故事板还是 XIB 中
标签: ios swift datepicker