点击另一个单元格时隐藏datePicker?

问题描述 投票:0回答:1

我正在遵循Apple的“使用Swift开发应用程序”,与日期选择器一起玩。在第4.9章的第700页。

我不知道当选择另一个不是两个日期选择器之一的单元格时如何隐藏日期选择器。如果您单击它们,它们可以很好地隐藏,但是我希望能够通过选择其他任何单元格(如果我查看)来隐藏它们。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)

    switch (indexPath.section, indexPath.row) {

    case (checkInDatePickerCellIndexPath.section, checkInDatePickerCellIndexPath.row - 1):

        if isCheckInDatePickerShown {
            isCheckInDatePickerShown = false
        } else if isCheckOutDatePickerShown {
            isCheckOutDatePickerShown = false
            isCheckInDatePickerShown = true
        } else {
            isCheckInDatePickerShown = true
        }

        tableView.beginUpdates()
        tableView.endUpdates()

    case (checkOutDatePickerCellIndexPath.section, checkOutDatePickerCellIndexPath.row - 1):

        if isCheckOutDatePickerShown {
            isCheckOutDatePickerShown = false
        } else if isCheckInDatePickerShown {
            isCheckInDatePickerShown = false
            isCheckOutDatePickerShown = true
        } else {
            isCheckOutDatePickerShown = true
        }

            tableView.beginUpdates()
            tableView.endUpdates()

    default:
        break
        }

我对整个事情还是陌生的,只想开始把我的头缠起来。

ios swift datepicker tableview didselectrowatindexpath
1个回答
0
投票

您可以在默认情况下强行执行此行为,这意味着如果所分接的单元格不是签入或签出,则选择器会隐藏。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

  tableView.deselectRow(at: indexPath, animated: true)

  switch (indexPath.section, indexPath.row) {

  case (checkInDatePickerCellIndexPath.section, checkInDatePickerCellIndexPath.row - 1):

     if isCheckInDatePickerShown {
         isCheckInDatePickerShown = false
     } else if isCheckOutDatePickerShown {
         isCheckOutDatePickerShown = false
         isCheckInDatePickerShown = true
     } else {
         isCheckInDatePickerShown = true
     }

     tableView.beginUpdates()
     tableView.endUpdates()

  case (checkOutDatePickerCellIndexPath.section, checkOutDatePickerCellIndexPath.row - 1):

     if isCheckOutDatePickerShown {
         isCheckOutDatePickerShown = false
     } else if isCheckInDatePickerShown {
         isCheckInDatePickerShown = false
         isCheckOutDatePickerShown = true
     } else {
         isCheckOutDatePickerShown = true
     }

     tableView.beginUpdates()
     tableView.endUpdates()

  default:

     isCheckOutDatePickerShown = false
     isCheckInDatePickerShown = false

     tableView.beginUpdates()
     tableView.endUpdates()

     break
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.