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" 
} 
+0

谢谢,我做了类似的,但方法本身之外。但是也试试你的建议。 – Dawy

+0

@达维,它为你工作吗? –

您可以添加到您的数据一个布尔标志,将决定做或不做。