【发布时间】:2018-03-05 12:30:40
【问题描述】:
我正在尝试创建一个可重复使用的 datePicker。在我的项目中,我在多个视图控制器中使用多个标签。为此,我创建了一个 DatePicker 类,我正在使用不同的地方。检查下面的代码它是否适用于 Single viewController。 这是我在这里显示日期的一个 VC,我从 CustomDatePickerViewController 中选择了日期。
import UIKit
class SelectDateViewController: UIViewController {
var dateString_fromCustomVC = String()
override func viewDidLoad() {
super.viewDidLoad()
print("dateString_fromCustomVC",dateString_fromCustomVC)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func selectDateAction(_ sender: Any) {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomDatePickerViewController") as! CustomDatePickerViewController
self.addChildViewController(popOverVC)
self.view.addSubview(popOverVC.view)
popOverVC.view.frame = view.bounds
popOverVC.didMove(toParentViewController: self)
self.navigationController?.navigationBar.isHidden = true
}
} i am displaying date
import UIKit
class SelectDateViewController: UIViewController {
var dateString_fromCustomVC = String()
override func viewDidLoad() {
super.viewDidLoad()
print("dateString_fromCustomVC",dateString_fromCustomVC)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func selectDateAction(_ sender: Any) {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomDatePickerViewController") as! CustomDatePickerViewController
self.addChildViewController(popOverVC)
self.view.addSubview(popOverVC.view)
popOverVC.view.frame = view.bounds
popOverVC.didMove(toParentViewController: self)
self.navigationController?.navigationBar.isHidden = true
}
}
这是我的 CustomDatePickerViewController 类。
import UIKit
class CustomDatePickerViewController: UIViewController {
@IBOutlet var myDatePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
view.frame.size.height = UIScreen.main.bounds.height
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.6)
}
@IBAction func saveDateAction(_ sender: Any) {
myDatePicker.datePickerMode = UIDatePickerMode.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
let selectedDate = dateFormatter.string(from: myDatePicker.date)
print("selectedDate",selectedDate)
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SelectDateViewController") as! SelectDateViewController
popOverVC.dateString_fromCustomVC = selectedDate
self.removeAnimate()
self.navigationController?.navigationBar.isHidden = false
}
func showAnimate()
{
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0;
UIView.animate(withDuration: 0.10, animations: {
self.view.alpha = 1.0
self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
});
}
func removeAnimate()
{
UIView.animate(withDuration: 0.05, animations: {
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0;
}, completion:{(finished : Bool) in
if (finished)
{
self.view.removeFromSuperview()
}
});
}
}
我可以将选定的日期从 CustomDatePickerViewController 发送到 SelectDateViewController,但是如何将选定的日期发送到不同的视图控制器。
【问题讨论】:
-
使用通知中心
-
为什么不想使用委托模式?
标签: ios swift datepicker uinavigationcontroller