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

これは動作しません。その他の提案はありますか? –

関連する問題