实施代理协议

问题描述 投票:0回答:2

我正在尝试实现委托协议,但是我显然做错了。我正在使用cocoapod:https://cocoapods.org/pods/SMDatePicker,我曾尝试与开发人员联系以寻求帮助,但到目前为止,他从未回复过我。

添加完pod并安装它之后,将.swift文件添加到我的项目中,并添加了以下方法,该方法可以很好地显示日期选择器:

class CalculatorViewController: UIViewController, SMDatePickerDelegate {

@IBOutlet weak var lblDate: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Initialize
    let tap = UITapGestureRecognizer(target: self, action: #selector(CalculatorViewController.tapFunction))
    lblDate.isUserInteractionEnabled = true
    lblDate.addGestureRecognizer(tap)

    // Set label date
    let dt = Date()
    lblDate.text = dt.asString(style: .short)
}

@IBAction func datePicker(picker: SMDatePicker, didPickDate date: NSDate) {
    let picked = date as Date
    lblDate.text = picked.asString(style: .short)
}

@IBAction func tapFunction(sender: UITapGestureRecognizer) {
    var picker: SMDatePicker = SMDatePicker()
    picker.pickerMode  = .date
    picker.showPickerInView(view, animated: true)
    print("tap working")
}

func datePicker(_ picker: SMDatePicker, didPickDate date: Date) {
    let picked = date
    print(date)
}

}

我正在尝试从日期选择器中获取结果。根据豆荚,各种方法如下:

 // Initialize
var picker: SMDatePicker = SMDatePicker()
// Set delegate
picker.delegate = self
You have SMDatePickerDelegate protocol to handle picker’s events. Here are list:
datePickerWillAppear(picker: SMDatePicker)
datePickerDidAppear(picker: SMDatePicker)
datePicker(picker: SMDatePicker, didPickDate date: NSDate)
datePickerDidCancel(picker: SMDatePicker)
datePickerWillDisappear(picker: SMDatePicker)
datePickerDidDisappear(picker: SMDatePicker)

我的问题是我不确定如何执行此操作,将不胜感激。

我正在尝试实现委托协议,但是我显然做错了。我正在使用一个cocoapod:https://cocoapods.org/pods/SMDatePicker,我试图与它联系...

swift delegates cocoapods protocols
2个回答
1
投票

您从没有设置delegateSMDatePicker。另外,您有两种再现形式didPickDate。 Swift中正确的语法是datePicker(_:didPickDate:),其中第二个参数是Date,而不是NSDate


0
投票

首先,在CalculatorViewController中添加一个引用情节提要/ XIB中的日期选择器的插座。

© www.soinside.com 2019 - 2024. All rights reserved.