1

嗨,我正在研究 UITableView 和 UISwitch。我有包含 UISwitches 的自定义单元格。一开始 UISwitch 是关闭的,我打开它。当我在另一个单元格中打开 UISwitch 时,一开始打开的 UISwitch 应该关闭。我在 cellForRowAtIndexPath 中实现这个。

我正在检查是否为特定症状选择了remediateID。如果选择打开,则应关闭休息。我什至在重新引导数据。

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];
     }    
}

因此,如果有人可以帮助我..那就太好了

4

2 回答 2

0

我会在你的数据数组中使用一个布尔值,它为 uiTable 提供检查的内容,天气开关是打开还是关闭。

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

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

于 2013-01-21T17:25:19.470 回答
0

我认为您的remediateArray 包含补救对象。这些对象应该有一个布尔属性并使用该属性来打开和关闭它。当你打开一个去迭代并关闭其他的。如果您无法将 BOOL 属性添加到补救类,请考虑创建一个继承类或类扩展。现在这是一种方式。如果您太担心内存,请使用实例变量来存储已打开的行的索引路径。并使用该变量显示单元格相应地意味着打开或关闭。When a new switch is selected simply call the reload data and the table should draw properly.

于 2013-01-21T20:05:43.123 回答