如何在uitableview的自定义单元格中禁用uiswitch

时间:2013-01-21 16:37:19

标签: iphone ios objective-c uitableview uiswitch

您好我正在使用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];
     }    
}

所以,如果有人能帮助我......那会很棒

2 个答案:

答案 0 :(得分:0)

我在你的数据数组中使用了一个布尔值,它为uiTable提供了检查,开启或关闭开关的内容。

当您触发一个开关时,将索引保存在类视图委托的全局变量中。然后在alertview中,您可以使用保存的索引来操作数据数组中交换机状态的布尔值。 之后你重新加载表。

当然你必须以这种方式改变你的cellForRowAtIndexPath,开关的状态取自布尔值而不是默认为关闭。

答案 1 :(得分:0)

我认为你的remedyArray包含补救对象。这些对象应该具有布尔属性并使用该属性来打开和关闭它。当你打开一个去迭代并关闭其他的。如果您无法将BOOL属性添加到补救类,请考虑创建继承的类或类扩展。 现在这是一种方式。如果您太担心内存使用实例变量来存储已打开的行的索引路径。并且使用该变量显示相应的单元意味着打开或关闭开关。选择新开关时,只需调用重载数据,表格应正确绘制。