2010-05-17 8 views
1

J'utilise un pickerView avec plusieurs composants liés à plusieurs champs dans une base de données (CoreData). Est-il possible de changer la police de caractère pour un composant spécifique en fonction de la présence de données dans la base de données? Par exemple, le champ dans la base de données est nul, la couleur de police du composant doit être ROUGE sinon noire.UiPickerView changer la couleur de police selon les données

Toute aide sera appréciée!

Dario

================== Merci Kenny,

Je dois demander à un seul UIPicker seulement. Donc je, en retournant la vue parametere (sans modificatiosn). Le résultat est que tous les sélecteurs affichent des lignes vides.

Merci pour votre aide!

Ici vous trouverez le fragment de code:

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

if (pickerView == tipoPk){ 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100,30)]; 
label.textColor =  [UIColor redColor]; 
switch (component) { 
case PK_Tipo: 
label.text = [tipoArray objectAtIndex:row]]; 
break; 
case PK_Settore: 
label.text = [settoreArray objectAtIndex:row]]; 
break; 
default: 
break; 
} 
return label; 
} 
else { 
return view; // <==== return view for non related pickerviews , but no rows shown 
} 


} 

Répondre

0

Oui, mais vous devez utiliser -pickerView:viewForRow:forComponent:reusingView: et fournir une coutume UILabel.

4

Celui-ci fonctionne aussi ..

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

CGRect imageFrame = CGRectMake(0.0, 0.0, 15, 15); 
UIImageView *label = [[[UIImageView alloc] initWithFrame:imageFrame] **autorelease**]; 

if (row == 0) 
{ 
    label.backgroundColor = [UIColor redColor]; 
} 
if (row == 1) 
{ 
    label.backgroundColor = [UIColor blueColor]; 
} 
if (row == 2) 
{ 
    label.backgroundColor = [UIColor blackColor]; 
} 
return label; 

}

Questions connexes