gpt4 book ai didi

ios - 无法从委托(delegate)快速获取值

转载 作者:行者123 更新时间:2023-11-30 11:39:29 25 4
gpt4 key购买 nike

我是 ios 开发和 swift 的新手。我遇到了一个问题。请帮我解决这个问题。我正在使用一个自定义日期选择器,因为我使用两个标签,标签名称是 fromDateLbl 和 toDateLbl。我使用两个按钮 fromDateBtn 和 toDateBtn。如果我使用一个标签和一个按钮,我能够获取日期,但无法获取两个按钮的日期。

请参阅我的代码。

    import UIKit

class SecondViewController: UIViewController {

@IBOutlet var fromDateLabel: UILabel!
@IBOutlet var toDateLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

}
@IBAction func fromDateAction(_ 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.delegate = self as? CustomDatePickerDelegate
popOverVC.didMove(toParentViewController: self)

self.navigationController?.navigationBar.isHidden = true
}
}
@IBAction func toDateAction(_ 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.delegate = self as? CustomDatePickerDelegate
popOverVC.didMove(toParentViewController: self)

self.navigationController?.navigationBar.isHidden = true
}


}


extension SecondViewController:CustomDatePickerDelegate
{
func CustomDateSeletced(value: String) {
fromDateLabel.text = value

}

}

第二个Vc代码。

class CustomDatePickerViewController: UIViewController {


@IBOutlet var myDatePicker: UIDatePicker!

var delegate: CustomDatePickerDelegate?

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 saveDate = dateFormatter.string(from: myDatePicker.date)
print("selectedDate",saveDate)
delegate?.CustomDateSeletced(value: saveDate)
self.removeAnimate()
self.navigationController?.navigationBar.isHidden = false

}

这是我的委托(delegate)类。

import Foundation

protocol CustomDatePickerDelegate {
func CustomDateSeletced(value: String)
}

最佳答案

这不是完美的解决方案,但下面的代码可能会对您有所帮助。为了改进一点,您可以使用 UILabel 操作并删除 UIButtons 并存储编辑的标签,这样您也可以防止 UILabel 编辑。

Phillip Mills为您实现更好的解决方案。

class SecondViewController: UIViewController {

@IBOutlet var fromDateLabel: UILabel!
@IBOutlet var toDateLabel: UILabel!

@IBOutlet var fromDateButton: UIButton!
@IBOutlet var toDateButton: UIButton!

var selectedButton: UIButton?

override func viewDidLoad() {
super.viewDidLoad()

}
@IBAction func selectDateAction(_ sender: Any) {
selectedButton = sender as? UIButton

let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomDatePickerViewController") as! CustomDatePickerViewController
self.addChildViewController(popOverVC)
popOverVC.delegate = self as? CustomDatePickerDelegate
present(popOverVC, animated: true, completion: nil)

self.navigationController?.navigationBar.isHidden = true
}


}

extension SecondViewController:CustomDatePickerDelegate
{
func CustomDateSeletced(value: String) {
if let button = selectedButton {
if button == toDateButton {
toDateLabel.text = value
} else {
fromDateLabel.text = value
}
selectedButton = nil
}

}

}

-

@IBAction func saveDateAction(_ sender: Any) {

myDatePicker.datePickerMode = UIDatePickerMode.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
let saveDate = dateFormatter.string(from: myDatePicker.date)
delegate?.CustomDateSeletced(value: saveDate)
self.navigationController?.navigationBar.isHidden = false
dismiss(animated: true, completion: nil)
}

关于ios - 无法从委托(delegate)快速获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49406927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com