UIPickerView pickerView(_:titleForRow:forComponent :)方法
问题描述:
我使用UIPickerView
及其方法pickerView(_:titleForRow:forComponent:)
来填充行。一切工作正常,我可以通过用户界面看到行。我想知道有多少次调用方法 - 例如,我有一个组件和3行,如果我通过打印命令跟踪方法调用,我发现8个调用(运行)。UIPickerView pickerView(_:titleForRow:forComponent :)方法
我想为每一行做一些特定的操作,但只是一次。任何暗示我做错了什么以及我应该如何做得更好? 谢谢。
答
pickerView(_:titleForRow:forComponent:)
由选取器视图在需要标题用于给定组件中给定行的标题时调用。所以无论何时标题需要调用委托函数。正如你可能已经注意到这些方法可以被多次调用,这是正常的。
在你:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
你有row
,你可以创建一个字典来检查,如果您以前设置的值。类似这样的:
var dictionary = [Int: Bool]()
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if let value = dictionary[row] {
if !value {
// set value, the value of row has not been set before
...
// set that rows value to true so that you know it has been set
dictionary[row] = true
}
}
return "some string"
}
答
您可以添加到您的数据一个布尔标志,将决定做或不做。
谢谢,我做了类似的,但方法本身之外。但是也试试你的建议。 – Dawy
@达维,它为你工作吗? –