web-dev-qa-db-ja.com

UIPickerViewの変更を検出する方法は?

UIPickerView値の変化を検出したい。

UIPickerViewがaddTargetに応答する場合、次のようなコードを使用しました。

-(void)valueChange:(id)sender {
 change = YES; 
 
} 
 
 UIPickerView * questionPicker = [[UIPickerView alloc] init]; 
 [questionPicker addTarget:self action:@selector(valueChange :) forControlEvents:UIControlEventValueChanged]; 

どうすれば同じことを正しい方法で行うことができますか?

28
tristaf

IPickerViewDelegate を見ると、次のようになっています。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

ピッカービューデリゲートを設定して実装するだけです。

56
Kevin Sylvestre

UIPickerViewDelegateにはpickerView:didSelectRow:inComponent:

6
gammelgul

この関数をオーバーライドする方がよい

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リアルタイムで変化を観察するクラス。

1
tylerlantern

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
            }        
}
1
Gian

ピッカービューデリゲートメソッドを使用する必要があります。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, 
inComponent component: Int) {
}
0
Haya Hashmat