Ios Swift 4.1:UIPickerView的SelectRow不会引发委托didSelectRow

Ios Swift 4.1:UIPickerView的SelectRow不会引发委托didSelectRow,ios,swift,Ios,Swift,页面加载选择器视图数据,并设置了UITextViewinputView。但是,当页面加载时,当我将pickerView的selectedRow设置为DB中的值时,我希望会引发下面的委托 pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 提到了一个解决方法,即添加一个虚拟行作为第一行,但是如果这不是一个选项,并且只有一行,那么有没有其他方法来实现它?来自(emphas

页面加载选择器视图数据,并设置了
UITextView
inputView。但是,当页面加载时,当我将pickerView的
selectedRow
设置为DB中的值时,我希望会引发下面的委托

pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
提到了一个解决方法,即添加一个虚拟行作为第一行,但是如果这不是一个选项,并且只有一行,那么有没有其他方法来实现它?

来自(emphasis mine):

用户选择组件中的行时,由选择器视图调用

这意味着,如果您使用代码选择一行,则不会调用该方法,这可能是您在此处尝试执行的操作(“我将pickerView的selectedRow设置为DB中的值”)

如果你很想打电话给didSelectRow,就打电话给它吧

pickerView(pickerView, didSelectRow: yourRow, inComponent: yourComponent)

或者,如果您不喜欢自己调用委托方法,因为它们不“假定”由其他类调用,您可以将委托方法中的代码提取到您自己的方法中,然后调用该方法。

如果您特别需要此方法,为什么不自己调用它呢?当您以编程方式设置它时,它不会调用委托方法。您必须自己处理它。理想情况下,即使用户重新选择所选项目(因为事件不是didChangedSelection),它也应该引发事件didSelectRow。您的简单方法确实保存了代码的复制。