使UIDatePicker与轻触静态UITableViewCell的时间一起出现

时间:2015-07-14 06:00:26

标签: ios swift uitableview uidatepicker

我有一个我想要的应用,通过点击UITableViewCell内的静态UITableViewControllerUIDatePicker 来弹出屏幕底部 ,这让我选择时间(例如小时,分钟和上午/下午)。

显然,它必须完全以编程方式创建,因为

  1. 我想隐藏它(当按下选择器上的按钮或时 在选择器外面的某个地方被轻拍)

  2. 我无法将其添加到View Controller。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Apple在DateCell示例中实现了类似的功能,正如* Islam Q. *在原始问题的评论中提到的那样。但是,对于这个答案,我会假设你宁愿做你所描述的。

您的目标实际上只需很少的代码即可实现。

  • 首先,将UIDatePicker拖出到您的视图控制器中 故事板中。
  • 然后,将该日期选择器连接到中的IBOutlet 视图控制器子类的实现。

    @IBOutlet weak var datePicker: UIDatePicker!
    
  • 在同一视图控制器的viewDidLoad()(或viewDidAppear(:)中,如果更合适),请通过更改其框架将日期选择器移动到屏幕下边缘下方。不要为帧更改设置动画。无论如何,屏幕上什么都没有。

    override func viewDidLoad() {
        super.viewDidLoad()
        self.datePicker.frame = self.offscreenFrame
        // ...
    }
    
  • 接下来,在tableView(_:didSelectRowAtIndexPath:)中,将datePicker动画回屏幕。在执行动画之前,请务必将日期选择器的日期设置为当前日期。

    self.datePicker.date = UIDate()
    // now do the animation
    
  • 最后,请确保在适当的时候设置解雇日期选择器的动画(例如,在tableView(_:didDeselectRowAtIndexPath:)中)。

    UIView.animateWithDuration(0.2) { () -> Void in
        self.datePicker.frame = self.onscreenFrame
    }
    

请注意,每个要点的实际执行情况可能因您的具体情况而异。此外,offscreenFrameonscreenFrame是我用于简化代码段的“虚构”变量。