web-dev-qa-db-ja.com

プログラムでUIPickerViewの目的の行にスクロールできますか?

デフォルトでは、UIPickerViewを初期化した後、最初の行が強調表示されます。プログラムで特定の行を強調表示または特定の行にスクロールするにはどうすればよいですか?

38
pradeepa

いつものように、これは完全に文書化されています。 Appleのドキュメント UIPickerView は、おそらく必要なメソッドが– selectRow:inComponent:animated:

66
warrenm

デリゲートのメソッドpickerView:didSelectRow:inComponentをトリガーする場合は、手動で呼び出す必要があります。

Obj-C

[self.myPickerView selectRow:0 inComponent:0 animated:NO];
[self pickerView:self.myPickerView didSelectRow:4 inComponent:0];

スウィフト

self.myPickerView.selectRow(0, inComponent: 0, animated: false)
self.pickerView(self.myPickerView, didSelectRow: 0, inComponent: 0)
36
Thomás Calmon

はい、とても簡単です[picker selectRow:row inComponent:component animated:NO];

33
Rich

IOS 9でXCode 7.3を使用して作業し、fieldPickerと呼ばれるピッカービューのデータにランタイムの変更を加えます。

// first load your new data to your picker view's data source (not shown here...) then load the data into the picker view using it's delegate
    [self.fieldPicker reloadAllComponents];

    // now that the data is loaded, select a row in the picker view through it's delegate
    [self.fieldPicker selectRow:([self.theFields count] - 1) inComponent:0 animated:NO];

// retrieve the row selected in the picker view to use in setting data from your data source in textboxes etc.
    long row = (long)[self.fieldPicker selectedRowInComponent: 0];
3
Spanky

メソッドself.myPickerView.selectRow(0, inComponent: 0, animated: false)afterを呼び出すかどうかを確認します。pickerViewをサブビューとして追加しました。

最初に、メソッドを呼び出しましたbefore pickerViewをサブビューとして追加しましたが、機能しませんでした。そのため、後で呼び出してみましたが、うまくいきました!

おそらくかなり明白で、私の賢い行動ではありませんが、それでもおそらく誰かが同じ問題を抱えており、私が助けられることを願っています! :)

0
Mitemmetim