2012-10-22 4 views
3

J'utilise UIPickerView dans une de mes vues, dans la même vue, je dois utiliser le UIPickerView dans plus de 5 endroits. Ce que j'ai fait, créé un débouché pour UIPickerView et réutilisé la même prise dans tout endroit ... pour exemple ...Comment utiliser UIPickerView plus efficacement?

audio_cap_picker = nil; 
// Creat picker view. 
if (audio_cap_picker == nil) { 
    audio_cap_picker = [[UIPickerView alloc] init]; 
    audio_cap_picker.delegate = self; 
    audio_cap_picker.showsSelectionIndicator = YES; 
    [self.view addSubview:audio_cap_picker]; 
} 

Comme ci-dessus, je suis en train de créer le point de vue du sélecteur quand un bouton est cliqué et sa ligne titre, et les informations connexes sont définies en fonction du bouton qui est cliqué, Il fonctionne bien. Cependant, lorsque je clique sur un bouton parce que je crée un nouveau à chaque fois, il ne met pas en surbrillance la ligne sélectionnée, mais la première ligne est mise en surbrillance. J'ai donc été obligé d'utiliser une sortie séparée pour chaque UIPickerView.

Y at-il un moyen d'éviter de créer des prises différentes pour UIPickerView? Ou est-ce le seul moyen? lequel est le plus efficace?

merci.

+0

Vous pouvez définir la valeur de l'étiquette pour pickerView .... – Venkat

+0

Ya j'ai différencié par étiquette seulement, le problème est avec sélection en surbrillance. – Newbee

+0

vous devez enregistrer l'index de ligne de tous les pick picks et chaque fois que pick picked appelé, vous devez sélectionner cette ligne en utilisant selectRow: inComponent: animated: méthode. –

Répondre

1

Lorsque l'utilisateur sélectionne la 5ème ligne par exemple, vous enregistrez une valeur, n'est-ce pas? Lorsque vous affichez le sélecteur, la prochaine fois, vous pouvez le déplacer est la sélection comme ceci:

int index = [valuessForFirstPicker indexOfObject:storeValueForFirstPicker]; 
[picker selectRow:index inComponent:0 animated:TRUE]; 

Hoep cette aide.

À la votre!

Questions connexes