swift - UIPickerView pickerView(_ :titleForRow:forComponent:) method

标签 swift uipickerview

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

我想对每一行执行特定操作,但只执行一次。有什么提示我做错了什么以及我应该如何做得更好吗? 谢谢。

最佳答案

pickerView(_:titleForRow:forComponent:) 当选取器 View 需要标题用于给定组件中的给定行时,由选取器 View 调用。因此,每当需要标题时,就会调用委托(delegate)函数。您可能已经注意到,这些方法可以被多次调用,这是正常的。

在你的:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

您有,您可以创建一个字典来检查您之前是否设置过值。像这样的事情:

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

关于swift - UIPickerView pickerView(_ :titleForRow:forComponent:) method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753061/

相关文章:

ios - Firebase 异步或同步保存数据方法

ios - 如何使 UILocalNotification 在 swift 中不重复?

swift - 在 react-native 上获取 ApplicationContext

ios - 仅在点击时选择 UIPickerView 中的多行(而不是滚动到一行时)

ios - 下拉样式UIPickerView?

swift - 使用 SpriteKit 和 Swift 创建弹弓

ios - 将 UIImage 转换为 NSData 并在 Swift 中转换回 UIImage?

cocoa-touch - UIPickerView 在 iPhone 上占据了所有水平空间,但在 iPad 上却没有?

ios - 如何在标签中输出正确的数字?

ios - 如何禁用 UIPickerView (Objective-C)?