2010-08-10 5 views
2

Dans mon application iPhone, je veux avoir un UIPickerView avec 2 composants. Initialement, la colonne de gauche sera large et la colonne de droite étroite pour permettre la lecture facile du texte de gauche afin d'en permettre la sélection. Une fois cette colonne sélectionnée, l'utilisateur cliquera sur la colonne de droite pour en sélectionner un élément: lorsque cela se produit, je souhaite redimensionner les colonnes de sorte que la colonne de gauche soit étroite et la colonne de droite large afin que tout le texte peut être lu.UIPickerView - changer la largeur du composant

J'ai expérimenté avec "pickerView widthForComponent" mais cela ne semble être appelé que lorsque la vue est initialement chargée.

Est-il possible de redimensionner dynamiquement les colonnes?

Merci

+0

pls, voir la mise à jour de la réponse. – kovpas

+0

Donc, il est temps d'accepter la réponse puisque c'est une bonne solution;) – kovpas

Répondre

2

Vous pouvez utiliser [pickerView reloadAllComponents].

Mise à jour:

C'est bizarre. Vous pouvez également essayer de vérifier les éléments suivants solution.

+0

J'ai essayé, mais 'pickerView widthForComponent' ne sera pas appelé à nouveau. – arossco

+1

Salut Kovpas - merci beaucoup! Cette solution fait l'affaire :-) Dans 'didSelectRow' ajouter \t "self.pickerView.delegate = nul; self.pickerView.delegate = auto;" Pour réinitialiser le délégué du sélecteur, les largeurs de composant doivent être redessinées. – arossco

2

Juste un rechargement ne fonctionnera pas. Vous devez également appeler setNeedsLayout

[pickerView reloadAllComponents]; 
[pickerView setNeedsLayout]; 
Questions connexes