Sélectionnez la ligne Après UIPickerView est chargé
J'ai un iPhone de la base de données d'application qui charge un UIPickerView
avec les données d'une table. Je veux mettre de la ligne sélectionnée à une ligne particulière à partir des données d'une autre table.
Par exemple: disons que j'ai un UIPickerView
qui est chargé avec X nombre de noms de l'iPhone, les amis de l'usager (le nombre de noms est variable; il peut être de 1 ou 1000 et tous sont entrés dans la base de données par l'utilisateur). L'iPhone, l'utilisateur dispose d'un paramètre de préférence que leur meilleur ami est TED. Je veux le UIPickerView
pour être en position de TED lors de l'affichage.
Où dois-je appeler selectRow
?
J'ai essayé en viewDidAppear
, mais il n'a jamais été appelé, dans titleForRow
qui a causé toutes sortes de comportement étrange. viewDidLoad
et viewWillAppear
sont hors de question, parce que je ne sais pas ce qui est dans la source de données pour le sélecteur encore.
- Il suffit de mettre la @jab code dans sa réponse après le chargement des données et de donner délégué. C'est ce qui a fonctionné pour moi!
Vous devez vous connecter pour publier un commentaire.
L'appeler après avoir récupérer les données. Je ne sais pas où vous chargez les données donc c'est juste une maquette de ce que devrait fonctionner. Si ce n'est pas logique, laissez-moi savoir où vous êtes le chargement des données, afin que je puisse le reconstituer dans ma tête 🙂
selectRow
n'oubliez pas d'appelerreloadAllComponents
!!!!Il y a un problème courant lors de l'un (par défaut) UIPickerView élément doit être sélectionné lors de la UIPickerView est d'abord montré. Le problème est lié à la séquence des événements. À partir de la lecture des messages précédents, il semble que l' [pickerView selectRow:n] est normalement appelé à la vue des contrôleurs de ViewDidLoad événement. Cependant, la UiPickerView de données est chargé uniquement après le ViewDidLoad de l'événement, ce qui signifie qu'une sélection de code dans le ViewDidLoad n'aura aucun effet. Pour y remédier, placez le code de la sélection dans ViewDidAppear;
Lieu de cela, où que vous initialisez le
UIView
qui contient votreUIPickerView
comme une sous-vue:J'ai juste constaté que, sur les 4,3 SDK est le composant de chargement comportements sont différents entre l'iPhone et l'iPad. Sur l'iPhone, j'ai été sur le point d'invoquer selectRow: juste après l'initialisation de la vue avant ou après l'ajout de la sous-vue de la hiérarchie. Sur iPad cependant, la selectRow appel n'a donné aucun résultat. Je me suis retrouvé à l'aide d'un performSelector:withObject:afterDelay: appel à attendre de 0,1 secondes avant le déclenchement de selectRow:inComponent:animation:. Cela a eu des résultats prévisibles sur l'iPhone et l'iPad.
Pour Swift, c'est tout simplement:
Si vous souhaitez que la ligne sélectionnée de façon permanente, a souligné l'utilisation de cette