UISwitch не будет отображаться в пользовательском UIView - PullRequest
0 голосов
/ 04 февраля 2012

Я создал собственный класс UIView и пытаюсь настроить в нем контроллер UISwitch программно. UISwitch не будет отображаться. Где зло?

UIView класс:

- (void)viewWillAppear:(BOOL)animated
{
    uiSwitch=[[[UISwitch alloc]initWithFrame:CGRectMake(5.00,200.00,79,27)] autorelease];
    [uiSwitch addTarget:self action:@selector(uiSwitchCurrentStatus) forControlEvents:UIControlEventValueChanged];
    [self addSubview:uiSwitch];
}

Я проверил другие проблемы, касающиеся UIswitch, но все они, похоже, не в моем случае. Заранее спасибо.

1 Ответ

1 голос
/ 04 февраля 2012

(если внутри UIViewCotroller) Попробуйте [self.view addSubview:uiSwitch];

Или, если это действительно внутри класса UIView, переместите весь метод в контроллер представления.

Или введите код в UIView layoutSubviews.

И в любом случае вам следует проверить, существует ли уже переключатель. В противном случае это может быть утечка.

Также , если поместить его в контроллер вида - (void)viewDidLoad может быть лучше.

-(void)layoutSubviews{
    if (!uiSwitch){
        uiSwitch=[[[UISwitch alloc]initWithFrame:CGRectMake(5.00,200.00,79,27)] autorelease];
        [uiSwitch addTarget:self action:@selector(uiSwitchCurrentStatus) forControlEvents:UIControlEventValueChanged];
        [self addSubview:uiSwitch];
    }

}
...