2016-11-20 81 views
0

每当我点击我的日期选择器上方的行时,我的日期选择器就不会像应该那样隐藏。相反,当我点击该行时,它会永久突出显示为深灰色,这通常是最初点击某个内容时的情况。这是为什么发生?为什么我的datePicker不能隐藏?为什么我的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() 
}} 

有什么建议吗?

+0

移动'datePickerHidden = datePickerHidden'后'tableView.beginUpdates()'!如果'datePickerHidden'初始化为'true',检查它是否有效 – byJeevan

+0

我试过了,没有运气 –

+0

你是如何显示选择器的?点击tableview的第一行,然后只会调用'toggleDatepicker'。你的代码是这样写的。你是在故事板还是XIB中隐藏选取器 – Vinodh

回答

0

更新你的代码是这样的:

datePickerHidden = !datePickerHidden 
datePicker.hidden = datePickerHidden 
+0

这不起作用。还有其他建议吗? –

相关问题