2010-09-09 4 views
0

Je travaille actuellement sur un seul View avec deux pickerViews.
J'ai trouvé quelque chose comme:UIPickerView titleForRow non appelé - Vue avec deux sélecteurs

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
{ 
if([thePickerView isEqual:pickerView ]){ 
    return [arrayNo count]; 
} 
else if([thePickerView isEqual:pickerView2]){  
    return [arrayRootNote count]; 
} 

else{ 
    return 0; 
} 

} 
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
if([thePickerView isEqual:pickerView]) 
{ 
    return [arrayNo objectAtIndex:row]; 
} 
else if([thePickerView isEqual:pickerView2]){  
    return [arrayRootNote objectAtIndex:row]; 
} 

else{ 
    return [arrayRootNote objectAtIndex:row]; 
} 

NSLog(@"I am a called method"); 
} 

Ce que je veux est de changer le titre de chaque sélecteur (peuplé par les deux NSMutableArrays). Le problème est que les deux sélecteurs montrent le "ArrayNo" du pickerView.

J'ai trouvé avec le débogueur (et le NSLog) que la méthode titleForRow n'est pas appelée du tout.
Une idée? Merci à l'avance

Séraphin

Répondre

1

Problème résolu:
viewForRow, je avais besoin de changer l'étiquette personnalisée, je l'ai fait:

- (UIView *)pickerView:(UIPickerView *)thePickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ 

CGRect rect = CGRectMake(0, 0, 188.25, 70.4); 
UILabel *label = [[UILabel alloc]initWithFrame:rect]; 
CGAffineTransform rotate = CGAffineTransformMakeRotation(3.14/2); 
rotate = CGAffineTransformScale(rotate, 0.22, 1.7); 

[label setTransform:rotate]; 
//label.text = [arrayNo objectAtIndex:row];   THAT was the error. 

if([thePickerView isEqual:pickerView])    THAT is the solution. 
{ 
label.text = [arrayNo objectAtIndex:row]; 
    } 
else if([thePickerView isEqual:pickerView2]){  
label.text = [arrayRootNote objectAtIndex:row]; 
} 

label.font = [UIFont fontWithName:@"Georgia" size:50]; 
label.textAlignment = UITextAlignmentCenter; 
label.numberOfLines = 2; 
label.lineBreakMode = UILineBreakModeWordWrap; 
label.backgroundColor = [UIColor clearColor]; 
label.clipsToBounds = YES; 
return label ; 
} 
1

u Définir la source a délégué/données?

+0

Merci pour la réponse rapide! Tout est connecté avec IB. Le pickerView est sur pickerView et le pickerView2 est sur pickerView2! J'ai également fait pickerView.delegate = self pour les deux –

+0

Problème résolu! J'ai fait une erreur dans le viewForRow, j'ai oublié que j'avais une étiquette personnalisée! –

Questions connexes