如何停止在自定义表格视图单元格中交换数据?

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

【讨论】:

以上是关于如何停止在自定义表格视图单元格中交换数据?的主要内容,如果未能解决你的问题,请参考以下文章

以swift语言在自定义表格视图单元格中更新进度视图下载

无法在自定义表格视图单元格中使 ImageView 成为一个圆圈

图像的滚动视图在自定义表格视图单元格中不起作用

自定义表格单元格中的堆栈视图

在自定义表格单元中更改图像视图

如何在自定义单元格中同步选择文本视图的事件?