繁体   English   中英

Swift 2 - 未调用协议委托

[英]Swift 2 - protocol delegate not called

我正在尝试实现一个delegate ,以便在主 viewController 中调用事件。

当我尝试在main view controller调用委托时,出现错误:

实例成员 'delegate' 不能用于类型 'CustomPickerViewController'

我在这里缺少什么?

在我的委托文件中,我有:

protocol CustomPickerViewControllerDelegate: class {
     func CustomPickerDidSelectRow(sender:CustomPickerViewController)
}

//MARK: The Main Class
public class CustomPickerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

// DELEGATE
    weak var delegate: CustomPickerViewControllerDelegate?

override public func viewDidLoad() {
        super.viewDidLoad()

        customPicker.delegate = self
        customPicker.dataSource = self

.....
    }

public func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        if component == 0 {

        }else {

        customLabel.text = arrayCustom[row]
        self.delegate?.CustomPickerDidSelectRow(self)
        }
    }


}

主视图控制器:

class ViewController: UIViewController, CustomPickerViewControllerDelegate {

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

       CustomPickerViewController.delegate = self // ERROR

    }

func CustomPickerDidSelectRow(sender: CustomPickerViewController) {
        print("ok")
    }

}

您可以像使用CustomPickerViewController一样简单地进行分配。 您需要为该视图控制器创建新对象,然后分配委托,

例如:

let customPickerVC = CustomPickerViewController()
customPickerVC.delegate = self 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM