2017-10-15 65 views
0

我使用UIPickerView及其方法pickerView(_:titleForRow:forComponent:)來填充行。一切工作正常,我可以通過用戶界面看到行。我想知道有多少次調用方法 - 例如,我有一個組件和3行,如果我通過打印命令跟蹤方法調用,我發現8個調用(運行)。UIPickerView pickerView(_:titleForRow:forComponent :)方法

我想爲每一行做一些特定的操作,但只是一次。任何暗示我做錯了什麼以及我應該如何做得更好? 謝謝。

回答

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

謝謝,我做了類似的,但方法本身之外。但是也試試你的建議。 – Dawy

+0

@達維,它爲你工作嗎? –

2

您可以添加到您的數據一個布爾標誌,將決定做或不做。