UIPickerView pickerView(_:titleForRow:forComponent :)方法

时间:2017-10-15 08:14:03

标签: swift uipickerview

我使用UIPickerView及其方法pickerView(_:titleForRow:forComponent:)来填充行。一切正常,我可以通过UI看到行。我想知道有多少次调用方法 - 例如我有一个组件和3行,如果我通过print命令跟踪方法调用,我会找到8个调用(运行)。

我想为每一行做一次具体行动,但只是一次。我有什么提示我错误地做了什么以及我应该怎样做得更好? 感谢。

2 个答案:

答案 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)

您可以向数据添加一个布尔标志,该标志将决定是否进行通话。