如何停止在自定义表格视图单元格中交换数据?
Posted
技术标签:
【中文标题】如何停止在自定义表格视图单元格中交换数据?【英文标题】:How to stop exchanging data in custom tableview cell? 【发布时间】:2016-06-11 13:05:13 【问题描述】:我正在开发一个表格视图应用程序(我设计了 uitableview 单元格笔尖)。一旦我向下滚动表格视图,我的单元格数据就会发生变化。你能指导我吗。下面我发布我的代码
静态 NSString *simpleTableIdentifier = @"Cell";
CusineTypeCell *cell = (CusineTypeCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CusineTypeCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
[cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkbozempty"] forState:UIControlStateNormal];
[cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkboxselect"] forState:UIControlStateSelected];
[cell.userSelectedCusine addTarget:self action:@selector(checkboxSelected:) forControlEvents:UIControlEventTouchUpInside];
cell.cusineName.text = [self.cusineFilterData objectAtIndex:indexPath.row];
return cell;
【问题讨论】:
【参考方案1】:请在您的数据源中添加一个键,通过设置值 0/1 来识别您是否选择了该行。 像这样
[self.cusineFilterData setValue:[NSNumber numberWithBool:NO] forKeyPath:@"isSelected"]; // It will add one key "isSelected" in all cusine filter data
在cellForRow
中检查“isSelected”属性的值并基于该显示复选标记。
if([[[self.cusinrFilterData objectAtIndex:indexPath] objectForKey:@"isSelected"] boolValue])
//show check mark
[cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkboxselect"] forState:UIControlStateSelected];
else
//hide check mark
[cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkbozempty"] forState:UIControlStateNormal];
在didSelect
中,根据行选择确保键值 0 到 1 和 1 到 0。
if([[[self.cusinrFilterData objectAtIndex:indexPath] objectForKey:@"isSelected"] boolValue])
[[[self.cusinrFilterData objectAtIndex:indexPath] setValue:[NSNumber numberWithBool:NO] forKey:@"isSelected"];
else
[[[self.cusinrFilterData objectAtIndex:indexPath] setValue:[NSNumber numberWithBool:YES] forKey:@"isSelected"];
【讨论】:
或者你可以在行中使用 NSIndexSet【参考方案2】:已编辑
误会了,你可以试试这个。
CusineTypeCell *cell = (CusineTypeCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier forIndexPath:indexPath];
【讨论】:
以上是关于如何停止在自定义表格视图单元格中交换数据?的主要内容,如果未能解决你的问题,请参考以下文章