从 swift 中的 DatePicker 获取 date/time
Getting date/time from DatePicker in swift
我为日期选择器创建了一个单独的 class。
import UIKit
protocol MYDatePickerViewControllerDelegate {
func didFinishSelectingDate(selectedDate:NSDate)
}
class MYDatePickerViewController: UIViewController {
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var navigationBar: UINavigationBar!
var datePickerDelegate : MYDatePickerViewControllerDelegate?
var customTransitioningDelegate: MYFadeInFadeOutTransitioning? = MYFadeInFadeOutTransitioning()
init(){
super.init(nibName: "MyDatePickerViewController", bundle: NSBundle.mainBundle())
transitioningDelegate = customTransitioningDelegate
modalPresentationStyle = .Custom
}
convenience init(withSelectedDate date: NSDate) {
self.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
customTransitioningDelegate = nil
}
override func viewDidLoad() {
super.viewDidLoad()
setupViewControllerUI()
}
func setupViewControllerUI() {
containerView.tag = kContainerViewTag
}
@IBAction func doneButtonTapped(sender: AnyObject) {
datePickerDelegate?.didFinishSelectingDate(self.datePicker.date)
print(self.datePicker.date)
dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func cancelButtonTapped(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
}
我从另一个 viewController 呈现为
let timePickerViewController = MYDatePickerViewController()
presentViewController(timePickerViewController, animated: true, completion: nil)
它确实从屏幕底部显示如下
现在我试图在用户点击 datePicker 上的完成按钮时获取选定的日期。为此,我正在尝试创建一个委托并从那里获取选择日期。但不能。
我已经将 MYDatePickerViewController 的代表实现到我的另一个 ViewController 作为
在我看来DidLoad
let datePicker = YASDatePickerViewController()
datePicker.datePickerDelegate = self
然后
func didFinishSelectingDate(selectedDate: NSDate) {
print(selectedDate)
}
但是我没有得到日期,请指导我。
试试这个,同时从另一个 viewController 呈现为:
let timePickerViewController = MYDatePickerViewController()
timePickerViewController.datePickerDelegate = self
presentViewController(timePickerViewController, animated: true, completion: nil)
并符合viewController您的协议:
class ViewController: UIViewController, MYDatePickerViewControllerDelegate {
休息看起来很好!
我为日期选择器创建了一个单独的 class。
import UIKit
protocol MYDatePickerViewControllerDelegate {
func didFinishSelectingDate(selectedDate:NSDate)
}
class MYDatePickerViewController: UIViewController {
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var navigationBar: UINavigationBar!
var datePickerDelegate : MYDatePickerViewControllerDelegate?
var customTransitioningDelegate: MYFadeInFadeOutTransitioning? = MYFadeInFadeOutTransitioning()
init(){
super.init(nibName: "MyDatePickerViewController", bundle: NSBundle.mainBundle())
transitioningDelegate = customTransitioningDelegate
modalPresentationStyle = .Custom
}
convenience init(withSelectedDate date: NSDate) {
self.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
customTransitioningDelegate = nil
}
override func viewDidLoad() {
super.viewDidLoad()
setupViewControllerUI()
}
func setupViewControllerUI() {
containerView.tag = kContainerViewTag
}
@IBAction func doneButtonTapped(sender: AnyObject) {
datePickerDelegate?.didFinishSelectingDate(self.datePicker.date)
print(self.datePicker.date)
dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func cancelButtonTapped(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
}
我从另一个 viewController 呈现为
let timePickerViewController = MYDatePickerViewController()
presentViewController(timePickerViewController, animated: true, completion: nil)
它确实从屏幕底部显示如下
现在我试图在用户点击 datePicker 上的完成按钮时获取选定的日期。为此,我正在尝试创建一个委托并从那里获取选择日期。但不能。 我已经将 MYDatePickerViewController 的代表实现到我的另一个 ViewController 作为
在我看来DidLoad
let datePicker = YASDatePickerViewController()
datePicker.datePickerDelegate = self
然后
func didFinishSelectingDate(selectedDate: NSDate) {
print(selectedDate)
}
但是我没有得到日期,请指导我。
试试这个,同时从另一个 viewController 呈现为:
let timePickerViewController = MYDatePickerViewController()
timePickerViewController.datePickerDelegate = self
presentViewController(timePickerViewController, animated: true, completion: nil)
并符合viewController您的协议:
class ViewController: UIViewController, MYDatePickerViewControllerDelegate {
休息看起来很好!