您好我正在使用UITableView和UISwitch。我有包含UISwitch的自定义单元格。在开始时,UISwitch关闭,我打开它。当我在另一个单元中打开UISwitch时,开始打开的UISwitch应该关闭。我在cellForRowAtIndexPath中实现它。
我正在检查是否选择了特定症状remedyID。如果选择,则应关闭开关和休息。我甚至正在重新发布数据。
cell.remedyID=[[[remedyArray objectAtIndex:indexPath.row]
objectForKey:@"RemedyID"]intValue];
cell.symptomIDNo =[[[remedyArray objectAtIndex:indexPath.row]
objectForKey:@"SymptomID"]intValue];
int checkValue = [[activeNotificationDictionary objectForKey:
[[remedyArray objectAtIndex:indexPath.row]
objectForKey:@"SymptomID"]]intValue];
if (cell.remedyID == checkValue){
objdb.notifyMe.on = YES;
} else {
objdb.notifyMe.on = NO;
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
if (buttonIndex != [alertView cancelButtonIndex]){
[activeNotificationDictionary setObject:
[NSNumber numberWithInt:selectedRemedyID] forKey:
[NSNumber numberWithInt:iPath]];
[remedyTableView reloadData];
}
}
所以,如果有人能帮助我......那会很棒
答案 0 :(得分:0)
我在你的数据数组中使用了一个布尔值,它为uiTable提供了检查,开启或关闭开关的内容。
当您触发一个开关时,将索引保存在类视图委托的全局变量中。然后在alertview中,您可以使用保存的索引来操作数据数组中交换机状态的布尔值。 之后你重新加载表。
当然你必须以这种方式改变你的cellForRowAtIndexPath
,开关的状态取自布尔值而不是默认为关闭。
答案 1 :(得分:0)
我认为你的remedyArray包含补救对象。这些对象应该具有布尔属性并使用该属性来打开和关闭它。当你打开一个去迭代并关闭其他的。如果您无法将BOOL属性添加到补救类,请考虑创建继承的类或类扩展。 现在这是一种方式。如果您太担心内存使用实例变量来存储已打开的行的索引路径。并且使用该变量显示相应的单元意味着打开或关闭开关。选择新开关时,只需调用重载数据,表格应正确绘制。