我使用UIPickerView
及其方法pickerView(_:titleForRow:forComponent:)
来填充行。一切正常,我可以通过UI看到行。我想知道有多少次调用方法 - 例如我有一个组件和3行,如果我通过print命令跟踪方法调用,我会找到8个调用(运行)。
我想为每一行做一次具体行动,但只是一次。我有什么提示我错误地做了什么以及我应该怎样做得更好? 感谢。
答案 0 :(得分:0)
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"
}
答案 1 :(得分:0)
您可以向数据添加一个布尔标志,该标志将决定是否进行通话。