我使用UIPickerView
及其方法pickerView(_:titleForRow:forComponent:)
來填充行。一切工作正常,我可以通過用戶界面看到行。我想知道有多少次調用方法 - 例如,我有一個組件和3行,如果我通過打印命令跟蹤方法調用,我發現8個調用(運行)。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
@達維,它爲你工作嗎? –