当我没有代表

时间:2015-06-18 15:38:54

标签: ios swift uikit

背景: 我正在开发一个供其他应用开发者使用的插件。如果他们有UIPickerView,我希望能够在用户与PickerView交互时做出反应。

这意味着我无法设置UIPickerViewDelegate。对于UITextFields,我可以使用addTarget,因为它从UIControl扩展。那么当我不知道UIPickerView的上下文时,我该怎么去听UIPickerView的变化呢?我更喜欢在Swift中这样做。

1 个答案:

答案 0 :(得分:0)

也许您可以将UIPickerViewDelegate设置为您的插件,并通过自定义YourPluginDelegate委托(部分)这些功能。通过这种方式,您和您的用户都可以检测到这些事件。而且它是远离你实现的又一层抽象。

代码示例:

你的插件:

func pickerView(pickerView: UIPickerView,
        titleForRow row: Int,
        forComponent component: Int) -> String!{

        //do your things here

        let response = self.pluginDelegate.plugin(self, titleForRow: row, forComponent: component)
        return response
}

YourPluginDelegate:

protocol YourPlugInDelegate{
    func plugin(plugin:PlugIn, titleForRow row: Int, forComponent component:Int)->String!
}