Как обращаться с UICustomSwitch в функциональности редактирования? - PullRequest
0 голосов
/ 19 января 2010
@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"])
    {
        Object.gender=@"M";


    }
    else
    {
        Object.gender=@"F";

    }
}

Работает нормально для добавления деталей в объект. Я получаю Мужской для «М» и Женский для «F». У меня есть один объект, который имеет значение, которое переключается между M и F. Однако в пользовательском интерфейсе синий цвет переключателя не отображается. Значение в объекте правильное, но состояние ON (синий цвет) переключателя не отображается.

1 Ответ

0 голосов
/ 19 января 2010

Вам необходимо вызвать – setOn:animated: для переключения для приблизительного значения при его инициализации или при изменении значения по данным.

Если переключатель виден, но неактивен и неактивен, необходимо установить его в положение «включено».

...