1

基本上我有一个 uitableview,每个单元格都包含一个 uiprogressview 和一个 uiswitch。切换开关切换进度视图的可见性。

但。

如果我在第 0 行切换开关。row:0 AND row:11 中的进度视图显示。

我的开关有这个: [(UISwitch *)cell.accessoryView addTarget:self action:@selector(PrefetchStudy:) forControlEvents:UIControlEventValueChanged];

这是行动:

-(void)PrefetchStudy:(id)sender
{
UISwitch *tmpSwitch = (UISwitch*)sender;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tmpSwitch.tag inSection:0];
CustomCell *cell = (CustomCell *)[self.tableview cellForRowAtIndexPath:indexPath];
NSString *tmp =  cell.patient_name.text;
NSLog(@"This is the patient name of the selected row: %@", tmp);
if(tmpSwitch.on)
{
    cell.progressBar.hidden = NO;

}
else
{
    cell.progressBar.hidden = YES;
}


}

关于为什么会发生这种情况的任何建议?

4

2 回答 2

0

Since UITableView reuse uitableviewcell for better performance, you can't count on each cell is unique. (this case the row 11 reuses the row 1 cell), you should reset the state of the cell in:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
于 2012-09-21T07:55:57.267 回答
0

您是否在代码中放置了一些断点?如果是这样,此方法是否被调用了两次(一次用于第 0 行,一次用于第 11 行)还是 cellForRowAtIndexPath 方法错误地使用第 0 行的可见性更新了第 11 行?

于 2011-03-23T19:58:56.917 回答