【发布时间】:2016-01-02 14:33:21
【问题描述】:
在我的应用程序中,我添加了 2 个标签和 2 个按钮,这些按钮与一个函数挂钩,该函数在 popovercontroller 中弹出一个日期选择器,当用户选择一个日期时,相应的标签应该更改。
除了标签之外的所有工作都会一起更新,我想要的是只更新相关标签,即当按下 button1 时 label1 应该收到 datepicker 日期,反之亦然。
这是我的代码:
import UIKit
class PopoverTestVC: UIViewController, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var dateLabel2: UILabel!
@IBOutlet weak var selectButton: UIButton!
@IBOutlet weak var selectButton2: UIButton!
@IBOutlet var datePicker: UIDatePicker!
var dateString = ""
let vc = UIViewController()
override func viewDidLoad() {
super.viewDidLoad()
datePicker.timeZone = NSTimeZone(abbreviation: "GMT")
//datePicker.addTarget(self, action: Selector("datePicked:"), forControlEvents: UIControlEvents.ValueChanged)
}
func datePicked(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT")
dateLabel.text = dateFormatter.stringFromDate(datePicker.date)
}
func datePicked2(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT")
dateLabel2.text = dateFormatter.stringFromDate(datePicker.date)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func popUp(sender: UIButton)
{
let fr = datePicker.frame
vc.view.frame = fr
vc.view.addSubview(datePicker!)
vc.view.backgroundColor = UIColor.greenColor()
vc.preferredContentSize = datePicker.frame.size
vc.modalPresentationStyle = UIModalPresentationStyle.Popover
if sender == selectButton
{
datePicker.addTarget(self, action: Selector("datePicked:"), forControlEvents: UIControlEvents.ValueChanged)
}
else if sender == selectButton2
{
datePicker.addTarget(self, action: Selector("datePicked2:"), forControlEvents: UIControlEvents.ValueChanged)
}
let popOverPC = vc.popoverPresentationController
vc.popoverPresentationController?.sourceRect = sender.frame
vc.popoverPresentationController?.sourceView = view
popOverPC!.permittedArrowDirections = UIPopoverArrowDirection.Any
popOverPC!.delegate = self
presentViewController(vc, animated: true, completion: nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle
{
return UIModalPresentationStyle.None
}
}
感谢任何帮助或建议以更好的方式做到这一点,因为该应用可能有多个使用相同日期选择器的网点。
【问题讨论】:
标签: swift datepicker uipopovercontroller