UIPickerView値の変化を検出したい。
UIPickerViewがaddTargetに応答する場合、次のようなコードを使用しました。
-(void)valueChange:(id)sender { change = YES; } UIPickerView * questionPicker = [[UIPickerView alloc] init]; [questionPicker addTarget:self action:@selector(valueChange :) forControlEvents:UIControlEventValueChanged];
どうすれば同じことを正しい方法で行うことができますか?
IPickerViewDelegate を見ると、次のようになっています。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
ピッカービューデリゲートを設定して実装するだけです。
UIPickerViewDelegate
にはpickerView:didSelectRow:inComponent:
この関数をオーバーライドする方がよい
public override func selectedRow(inComponent component: Int) -> Int {
let index = super.selectedRow(inComponent: component)
//call closure or delegate as you want
return index
}
in IPickerViewリアルタイムで変化を観察するクラス。
Swift 4:ピッカービューデリゲートを実装します:
optional public func pickerView(_ pickerView: UIPickerView, titleForRow row:
Int, forComponent component: Int) -> String?
例:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int,
forComponent component: Int) -> String? {
let value = dummyListArray[row]
if value == "someText"{
//Perform Action
}
return value
}
または
optional public func pickerView(_ pickerView: UIPickerView, didSelectRow row:
Int, inComponent component: Int)
例:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int,
inComponent component: Int) {
let value = dummyListArray[row]
if value == "someText"{
//Perform Action
}
}
ピッカービューデリゲートメソッドを使用する必要があります。
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int,
inComponent component: Int) {
}