背景: 我正在开发一个供其他应用开发者使用的插件。如果他们有UIPickerView,我希望能够在用户与PickerView交互时做出反应。
这意味着我无法设置UIPickerViewDelegate。对于UITextFields,我可以使用addTarget,因为它从UIControl扩展。那么当我不知道UIPickerView的上下文时,我该怎么去听UIPickerView的变化呢?我更喜欢在Swift中这样做。
答案 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! }