2010-01-19 4 views
0
@interface UICustomSwitch : UISwitch 
{ 

} 
-(void)setLeftLabelText:(NSString *)labelText; 
-(void)setRightLabelText:(NSString *)labelText; 
@end 
@implementation UICustomSwitch 
-(UIView *)slider 
{ 
    return [[self subviews ] lastObject]; 
} 
-(UIView *)textHolder 
{ 
    return [[[self slider] subviews]objectAtIndex:2]; 
} 
-(UILabel *)leftLabel 
{ 
    return [[[self textHolder] subviews]objectAtIndex:0]; 

} 
-(UILabel *)rightLabel 
{ 
    return [[[self textHolder] subviews]objectAtIndex:1]; 

} 
-(void)setLeftLabelText:(NSString *)labelText; 
{ 
    [[self leftLabel] setText:labelText]; 
} 
-(void)setRightLabelText:(NSString *)labelText 
{ 
    [[self rightLabel]setText:labelText]; 

} 
@end 

switchView=[[[UICustomSwitch alloc]initWithFrame:CGRectMake(200,5,90,30)]autorelease]; 
     [switchView setLeftLabelText:@"F"]; 
     [switchView setRightLabelText:@"M"]; 
     [switchView addTarget:self action:@selector(genderAction:) forControlEvents:UIControlEventValueChanged]; 

-(void)genderAction:(id)sender 
{ 
    if([Object.gender isEqualToString:@"F"]) 
    { 
     [email protected]"M"; 


    } 
    else 
    { 
     [email protected]"F"; 

    } 
} 

Cela fonctionne très bien pour ajouter les détails dans l'objet. Je reçois Male pour 'M' et Female pour 'F'. J'ai un objet qui a une valeur qui bascule entre M et F. Cependant, dans l'interface utilisateur, la couleur bleue du commutateur n'est pas affichée. La valeur dans l'objet est correcte mais l'état ON (couleur bleue) du commutateur n'est pas affiché.Comment gérer UICustomSwitch dans la fonctionnalité d'édition?

Répondre

0

Vous devez appeler – setOn:animated: pour le commutateur pour la valeur approbate lorsque vous l'initialisez ou lorsque la valeur change à partir des données.

Si le commutateur est visible mais grisé et inactif, vous devez le définir sur activé.