デフォルトでは、UIPickerViewを初期化した後、最初の行が強調表示されます。プログラムで特定の行を強調表示または特定の行にスクロールするにはどうすればよいですか?
いつものように、これは完全に文書化されています。 Appleのドキュメント UIPickerView
は、おそらく必要なメソッドが– selectRow:inComponent:animated:
。
デリゲートのメソッド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)
はい、とても簡単です[picker selectRow:row inComponent:component animated:NO];
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];
メソッドself.myPickerView.selectRow(0, inComponent: 0, animated: false)
afterを呼び出すかどうかを確認します。pickerViewをサブビューとして追加しました。
最初に、メソッドを呼び出しましたbefore pickerViewをサブビューとして追加しましたが、機能しませんでした。そのため、後で呼び出してみましたが、うまくいきました!
おそらくかなり明白で、私の賢い行動ではありませんが、それでもおそらく誰かが同じ問題を抱えており、私が助けられることを願っています! :)