UISwitch快速切换多次
问题描述:
我在玩我的应用程序,并且我非常快速地切换UISwitch(谁能抗拒?)。所以,我把它切换得非常快10-15次,这个数组应该包含来自表格视图单元格的数据,我有我的开关,要么有相同单元格的多余副本,要么只有一个副本(正确的大小写),或者根本没有数据。该应用程序工作正常,如果它以正常速度切换。UISwitch快速切换多次
我很确定这种情况不会真的发生在我的用户身上,但我仍然好奇它为什么会发生。
感谢, Teja公司
编辑:添加代码。每次切换开关时都会调用此方法。
-(void)saveOptionChanged:(id) sender
{
UISwitch *sw = (UISwitch *) sender;
//int tag = current.tag;
BOOL status = (BOOL) [sw isOn];
NSInteger tag = sw.tag;
NSInteger row1 = tag%1000;
NSInteger section1 = (tag - row1)/1000;
DiagDetails *temp = [preferences getDiagElementAt:section1 row:row1];
temp.ICD9Code= [temp.ICD9Code stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
temp.ICD9Desc= [temp.ICD9Desc stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"Adding %@ - %@",temp.ICD9Code, temp.ICD9Desc);
NSLog(@"tag = %ld, row = %ld, section = %ld",tag,row1,section1);
if(status) {
BOOL returnVal = YES;
returnVal = [currentPatient addICD9Code:temp];
if(!returnVal) {
UIAlertView *error = [[UIAlertView alloc] initWithTitle:@"Diagnosis add error" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[error show];
[error release];
[sw setOn:NO];
}
}
else {
DiagDetails *temp = [preferences getDiagElementAt:section1 row:row1];
[currentPatient removeICD9Code:temp.ICD9Code];
}
}
答
如果我猜,你是如此之快,他们可能合并或取得跳过,所以如果你基于事件处理程序被调用的次数正在暗中设置状态下,你可能会trigging事件不同步。 (相反,您应该明确确定事件处理函数内部的UISwitch
的状态 - 开或关)。您必须显示更多的代码才能确定。至少代码为UISwitch
的事件处理程序更改了状态事件。
如果没有看到代码就无法判断......交换机做了什么? – prendio2 2010-04-21 19:22:53