我有一个我想要的应用,通过点击UITableViewCell
内的静态UITableViewController
,UIDatePicker
来弹出屏幕底部 ,这让我选择时间(例如小时,分钟和上午/下午)。
显然,它必须完全以编程方式创建,因为
我想隐藏它(当按下选择器上的按钮或时 在选择器外面的某个地方被轻拍)
我无法将其添加到View Controller。有什么想法吗?
答案 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
}
请注意,每个要点的实际执行情况可能因您的具体情况而异。此外,offscreenFrame
和onscreenFrame
是我用于简化代码段的“虚构”变量。