如何判断UITableViewCell
内部的UISwitch
已被点击?如何判断UITableViewCell内部的UISwitch何时被点击?
我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;
}
}
打开开关是不是一个问题。现在的问题是,当UISwitch设置为OFF时,出于某种原因,它的动作会被调用两次(并且我可以获得2个NSLogs一次)。
为什么越来越行动调用两次只有一个水龙头关闭开关?我如何解决它?
谢谢。我没有使用标签属性,而是为每个交换机创建了一个特定的操作(switchToggled1,switchToggled2)。但是有一个问题:当我点击开关一次,由于某种原因,这个动作被调用两次。为什么会被调用两次? (更新:关闭开关将调用动作两次,将开关打开只调用一次动作) – RexOnRoids 2010-03-27 08:08:48
这应该是上面示例代码中的@selector NOT @selection。这花了我大约半小时的时间才弄清楚。 – 2010-04-05 12:40:25
@Chuck哎呀!对于那个很抱歉。这是在浏览器中输入代码的缺点...... – 2010-04-05 15:33:58