2016-11-20 52 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

這不起作用。還有其他建議嗎? –