Rex*_*ids 10 iphone xcode uitableview uiswitch
如何判断一个UISwitch内部UITableViewCell是否被轻敲?
我UISwitch是在单元格内设置的(通用单元格),如下所示:
UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[cell addSubview:mySwitch];
cell.accessoryView = mySwitch;
Run Code Online (Sandbox Code Playgroud)
我试图检测这样的水龙头(但它不起作用):
- (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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
以下是知道它被点击的时间:
-(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;
}
}
Run Code Online (Sandbox Code Playgroud)
打开开关不是问题.现在的问题是,当UISwitch设置为OFF时,由于某种原因,它的动作被调用两次(并且我获得2个NSLogs 1次).
为什么只有一个水龙头的动作被称为TWICE才能关闭开关?我如何解决它?
Dav*_*ong 12
为交换机提供目标和操作:
[mySwitch addTarget:self action:@selector(switchToggled:) forControlEvents: UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
然后实现你的switchToggled:方法:
- (void) switchToggled:(id)sender {
//a switch was toggled.
//maybe use it's tag property to figure out which one
}
Run Code Online (Sandbox Code Playgroud)
Gra*_*t M 11
对于多次触摸有问题的人,您尝试将控制事件更改为UIControlEventValueChanged
[catSwitch addTarget:self action:@selector(catSwitched:) forControlEvents: UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
我没有这样的麻烦.
| 归档时间: |
|
| 查看次数: |
8472 次 |
| 最近记录: |