Afficher les données dans UIPickerView deuxième composant basé sur le premier composant de sélection
Je suis à l'aide d'un sélecteur à deux composants. Je veux si je sélectionne une ligne dans le premier volet sur la base de composant sélectionné, il affiche la valeur des données correspondantes.
Comme sélectionneur est de montrer que l'Angleterre a des correspondants des clubs où l'Angleterre est sélectionné. Je veux faire de même pour les autres pays. Mais je ne suis pas aller de l'approche à suivre.
Voici mon code:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
if(component ==0)
{
return [Nations count];
}
else{
if(country_flag==0)
{
return [England count];
}
else if (country_flag==1)
{
return [Espana count];
}
else if (country_flag==2)
{
return [Netherlands count];
}
else if (country_flag==3)
{
return [Germany count];
}
else if (country_flag==4)
{
return [Italy count];
}
}
return 0;
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(component ==0)
{
return [Nations objectAtIndex:row];
}
else{
if(country_flag==0)
{
return [England objectAtIndex:row];
}
else if (country_flag==1)
{
return [Espana objectAtIndex:row];
}
else if (country_flag==2)
{
return [Netherlands objectAtIndex:row];
}
else if (country_flag==3)
{
return [Germany objectAtIndex:row];
}
else if (country_flag==4)
{
return [Italy objectAtIndex:row];
}
}
return 0;
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
label.text=[Nations objectAtIndex:row];
str = [[NSString alloc]init];
if (country_flag==0) {
str=@"England";
label_1.text=[NSString stringWithFormat:@"%@",str];
NSLog(@"%@",label_1);
str=@"";
country_flag =1;
[picker reloadAllComponents];
}
else if (country_flag==1)
{
str=@"Espana";
label_1.text=[NSString stringWithFormat:@"%@",str];
NSLog(@"%@",label_1);
str=@"";
country_flag =2;
[picker reloadAllComponents];
}
else if (country_flag==2)
{
str=@"Netherlands";
label_1.text=[NSString stringWithFormat:@"%@",str];
NSLog(@"%@",label_1);
str=@"";
country_flag =3;
[picker reloadAllComponents];
}
else if (country_flag==3)
{
str=@"Germany";
label_1.text=[NSString stringWithFormat:@"%@",str];
NSLog(@"%@",label_1);
str=@"";
country_flag =4;
[picker reloadAllComponents];
}
else if (country_flag==4)
{
str=@"Germany";
label_1.text=[NSString stringWithFormat:@"%@",str];
NSLog(@"%@",label_1);
str=@"";
// country_flag =4;
[picker reloadAllComponents];
}
}
EDIT:
Voici les données
Nations = [[NSMutableArray alloc]initWithObjects:@"England",@"Espana",@"Germany",@"Netherlands",@"Germany",@"Italy", nil];
England=[[NSMutableArray alloc]initWithObjects:@"Arsenal",@"Chelsea",@"Manchester City",@"Manchester United",@"Liverpool",@"Tottenham",@"Fulham City",@"Stoke City",@"Sunderland",@"NewCastle United",@"Blackburn Rovers",@"Southampton",@"Wolvers",@"Aston Villa", nil];
Espana = [[NSMutableArray alloc]initWithObjects:@"Barcelona",@"Real Madrid",@"Valencia",@"Athletico Madrid",@"Athletico Balbao",@"Getafe CF",@"Sevilla CF", nil];
Netherlands = [[NSMutableArray alloc]initWithObjects:@"Celtics",@"Ajax",@"Amesterdam", nil];
Germany = [[NSMutableArray alloc]initWithObjects:@"Bayern Munich",@"Bermen",@"Fiorentina",@"Pampas",@"Nord", nil];
Italy = [[NSMutableArray alloc]initWithObjects:@"AC Milan",@"Inter Milan",@"Juventus", nil];
essayez de [sélecteur de reloadComponent:(NSInteger)]; au lieu de [sélecteur de reloadAllComponents];
Merci pour votre soutien de l'homme, mais pas de changement.
Il y a quelque chose de bizarre avec votre country_flag variable. Pouvez-vous nous montrer où elle est déclarée? Aussi, pourquoi doit country_flag == 1 avant que je puisse choisir Espana?
Je l'ai déclaré à country_flag=0 mais je suis en train d'essayer d'augmenter la valeur de l'indicateur dans didSelectRow délégué. Je sais que je vais faire un gâchis, avec des drapeaux, guide-moi un code correct.
Merci pour votre soutien de l'homme, mais pas de changement.
Il y a quelque chose de bizarre avec votre country_flag variable. Pouvez-vous nous montrer où elle est déclarée? Aussi, pourquoi doit country_flag == 1 avant que je puisse choisir Espana?
Je l'ai déclaré à country_flag=0 mais je suis en train d'essayer d'augmenter la valeur de l'indicateur dans didSelectRow délégué. Je sais que je vais faire un gâchis, avec des drapeaux, guide-moi un code correct.
OriginalL'auteur DeepK SOreadytohelp | 2012-11-21
Vous devez vous connecter pour publier un commentaire.
votre code.. avec des modifications mineures..
didSelectRow
}
après...
et
UPD
h fichier j'ai
après que.. vous devez vous connecter de pickerView à la vôtre ViewController (source de données et délégué)
regardez le projet dl.dropbox.com/u/19438780/testPickerView.zip
merci man!!!! merci une tonne!!!!
cheers et amusez-vous!
pour amélioration. vous pouvez ajouter dans le viewDidLoad -> club=[[NSString alloc] initWithFormat:@"Angleterre"];
OriginalL'auteur TonyMkenu
Habituellement, vous le faites comme ça.
Vous créez un fichier plist contenant les données de tous vos pays
le résultat est quelque chose comme
en supposant que les éléments suivants sont définis dans les propriétés ou quelque part
vous ensuite de faire des choses comme ça
Cela devrait vous aider. J'espère qu'il n'y a pas trop de faute de frappe des erreurs, mais vous devriez au moins avoir l'idée générale.
Pas sûr que je comprends ce que tu veux être "supprimer mes tableaux". Comme mon exemple montre habituellement vous avez un mondial dictionnaire avec toutes les données avec des pays comme les clés et les clubs comme des sous-tableaux. Alors pour votre sélecteur de vous garder 2 tableaux pour les données. 1 pour le pays, que vous ne les supprimez pas/recharger, et 1 pour les clubs qui est actualisé/changé chaque fois que vous modifiez le pays.
OriginalL'auteur HpTerm
Je pense que le problème est dans votre
didSelectRow
méthode. Vous vérifiez quel pays est déjà sélectionné (danscountry_flag
) avant de permettre la sélection d'un nouveau pays. Je ne pense pas qu'il n'y a aucune raison de le faire.Permettre à tout pays à être sélectionné. Puis définissez
country_flag
en fonction de la ligne qui a été sélectionné.Il suffit de ne
country_flag = row+1;
Vous pouvez avoir votre
if
instructions pour configurer votre étiquette si c'est important.OriginalL'auteur Martin
De regarder cela, je pense qu'il peut vous aider à
Tout d'abord assurez-vous que vous avez connecté votre sélecteur avec
IBOutlet .
Encore si vous obtenez le problème, vous pouvez utiliser
[thePickerView reloadComponent:(NSInteger)component];
au lieu de
vérifier les valeurs dans d'autres pays tableau comme Espana et des autres et assurez-vous qu'ils n'ont pas les mêmes valeurs.
J'ai posté mes données...prendre un coup d'oeil.
OriginalL'auteur Mihir