web-dev-qa-db-fra.com

Puis-je faire défiler par programme jusqu'à la ligne souhaitée dans UIPickerView?

Par défaut, la première ligne est mise en surbrillance après l'initialisation de l'UIPickerView. Comment mettre en surbrillance une ligne particulière ou faire défiler une ligne particulière par programme?

38
pradeepa

Comme toujours, cela est bien documenté. La documentation Apple pour UIPickerView devrait vous indiquer que la méthode que vous souhaitez probablement est – selectRow:inComponent:animated:.

66
warrenm

Si vous souhaitez déclencher le sélecteur de méthode du déléguéView: didSelectRow: inComponent, vous devez l'appeler manuellement:

Obj-C

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

rapide

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

Oui, c'est très simple [picker selectRow:row inComponent:component animated:NO];

33
Rich

Travailler dans iOS 9 avec XCode 7.3, pour apporter des modifications d'exécution aux données dans une vue de sélecteur appelée 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

Vérifiez si vous appelez la méthode self.myPickerView.selectRow(0, inComponent: 0, animated: false)après vous avez ajouté le pickerView en tant que sous-vue.

Tout d'abord, j'ai appelé la méthode avant J'ai ajouté le pickerView en tant que sous-vue et cela n'a pas fonctionné. Par conséquent, je l'ai appelé ensuite et cela a fonctionné!

Probablement assez évident et pas ma décision la plus intelligente, mais peut-être que quelqu'un a le même problème un jour et j'espère pouvoir aider! :)

0
Mitemmetim