Как узнать, когда был использован UISwitch
внутри UITableViewCell
?Как узнать, когда UISwitch внутри UITableViewCell был использован?
Мой UISwitch
устанавливается внутри клетки (родовой клетки), как это:
UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[cell addSubview:mySwitch];
cell.accessoryView = mySwitch;
И я пытаюсь обнаружить кран, как это (но это не работает):
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
NSUserDefaults *prefs;
if(indexPath.section == 1){
switch(indexPath.row)
{
case 0:
NSLog(@"Tapped Login Switch");
break;
default:
break;
}
}
}
Dave DeLong предложил установить действие для каждого коммутатора в качестве решения. Таким образом, я сделал следующее, чтобы установить переключатель:
UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[mySwitch addTarget:self action:@selector(switchToggled2:) forControlEvents: UIControlEventTouchUpInside];
if(at_songs){
[mySwitch setOn:YES animated:NO];
}
[cell addSubview:mySwitch];
cell.accessoryView = mySwitch;
И следующее, чтобы узнать, когда он был использован:
-(IBAction)switchToggled1:(id)sender {
NSUserDefaults *prefs;
NSLog(@"Tapped Login Switch");
prefs = [NSUserDefaults standardUserDefaults];
if(at_login){
[prefs setObject:@"NO" forKey:@"autotweet_login"];
at_login = NO;
}else{
[prefs setObject:@"YES" forKey:@"autotweet_login"];
at_login = YES;
}
}
Включение переключателя ON не проблема. Проблема СЕЙЧАС заключается в том, что когда UISwitch установлен в OFF, по какой-то причине его действие вызывается дважды (и я получаю 2 NSLogs за 1 нажатие).
Почему действие вызывался ДВАЖДЫ только один кран, чтобы повернуть переключатель OFF? Как это исправить?
Спасибо. Вместо использования свойства tag я создал определенное действие (switchToggled1, switchToggled2) для каждого коммутатора. Но есть одна проблема: когда я нажимаю переключатель один раз, по какой-то причине действие вызывается дважды. Зачем это нужно дважды звонить? (ОБНОВЛЕНИЕ: включение выключателя ВЫКЛ вызывает действие дважды, включение выключателя ВКЛ вызывает действие только один раз) – RexOnRoids
Это должно быть @selector NOT @selection в приведенном выше примере кода. Это стоило мне около получаса моего времени, чтобы разобраться. –
@ Chuck возглашает! Извини за это. Это недостаток ввода кода в браузере ... –