UIPicker - 如何记录标准selectedRow如果用户只点击确定按钮

问题描述:

我有一个UIpicker模态窗口。一切工作正常,除了一件事。当用户单击输入文本字段时,带有UIpickerView的模式窗口按预期打开。如果所选的行是正确的,并且用户单击确定按钮,则当前代码无法注册该值。UIPicker - 如何记录标准selectedRow如果用户只点击确定按钮

// Set the default row, so if user click ok without changing it is recorded 
self.picker.selectRow(0, inComponent: 0, animated: false) 

是否有替代didSelectRow?我认为这是问题,因为用户不会选择一行,因为它已经被代码预选。

// Capture the picker selection 
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    // This method is triggered whenever the user makes a change to the picker selection. 
    // The parameter named row and component represents what was selected. 
    selectedType = pickerData[row] as String 
} 
+0

有时甚至最明显的是很难看到.... –

很好解决了它。只需添加一个测试来查看selectedType是否为零。

@IBAction func OkBtnWasPressed(_ sender: Any) { 
     // update text to selected value 
     if selectedType == nil { 
      typeTextField.text = pickerData[defaultRow] 
     } else { 
      typeTextField.text = selectedType 
     } 
     animateOut() 
    }