UISwitch crash when value change without any log

Рейтинг: 0Ответов: 1Опубликовано: 05.12.2014

MainControllerView -> ProtectionViewController as childview -> BackupViewController (as subview) -> UISwitch (as subview)

Если поместить UISwitch на ProtectionViewController, он работает. Убрать таргет для свитча, кликается как невиновный.

P.S. Таргет присутствует :) Дебажил, до него даже переход не осуществляется.

CGRect switchRect = CGRectMake(self.view.frame.size.width - 65,
                                   110,
                                   25,
                                   10);

    self.switchButton = [[UISwitch alloc] initWithFrame:switchRect];

    self.switchButton.on = NO;
    [self.switchButton addTarget:self
                      action:@selector(switchToggled)
            forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:self.switchButton];

Ответы

▲ 1Принят

У ViewController'ов вообще нет subview, они есть у controller.view. А в остальном слишком сумбурно написано и данных не хватает, что там делает ваш свитч? Ведь крашится что-то внутри его таргета, так приведите этот таргет или понаставьте брейкпоинтов и сами найдите что после чего именно крашится. Пока похоже на "У меня есть машина, она не едет, почему?"

Обновление

Написали вы это уже после моего коммента, ну да не суть. В целом, если падает именно на вызове таргета значит нет такого селектора - либо не у того класса дергаете (очень на это похоже, если вы в точности то же используете на ProtectionViewController, то похоже оно там, а не на BackupViewController), либо не та сигнатура (скажем, -(void) switchToggled:(id) sender вместе -(void) switchToggled)