我在自定义TableviewCell时有个点击了CELL就会有一个imageView属性会变化的,我生成 后在didSelectRowAtIndexPath这方法里面把点击到的CELL的imageView
第一个问题:但是点击第一个CELL的imageView发生改变了,怎么最后一个CELL的属性imageView也改变了
第二个问题:
     我点击第一个CELL后然后拖动tableView导致第一个CELL消失在屏幕上,然后点击任意一个CELL,再拖tableView到上面,为什么上面那个CELL的属性imageView没有变回默认的;
 这是初始时点击的CELL拖动到底部点击另一个CELL然后把视力拖回来如图:
第三个问题:
     当我点击一次第一或第二个CELL后拖动tableView使CELL消失在屏幕上,来回手动,前面的CELL或最后面的CELL为什么会随机发生属性的改变(在默认以及触发之间),
     
注:点击后右方图片会出现蓝色点,转为是灰色中间没有蓝色点;   这是我自定义CELL的两个 属性:
  这是我生成生成CELL和点击CELL后处理的代码(我生成的CELL行数是10行)
这是点击CELL 后的处理方法:内容有点长,麻烦大神们指导初入门的菜鸟!!!!!

解决方案 »

  1.   

    导致出现这几个问题的原因有两个方面: 一是uitableviewcell 的“重用” 问题 二是你的逻辑问题,这里给出一个完整的解决方案
    1.建议由系统托管cell的创建,代码
    UINib *nib =[UINib nibWithNibName:@"TableViewCell"];
    [self.tableView registerNib:nilb forIdentifier:@"MUSICCELL"];
    有了如上的代码,在cellForRowAtIndexpath中就可以省去cell == nil 为空的判断
    2. 由于cell的重用问题导致你上面提到的1,2问题。关于右边图片显示状态的问题,我建议你在每次渲染cell时做判断。你可以在控制器中创建一个集合,这个集合来存储你当前选中行的indexPath,在每次渲染cell时,将cell的indexPath与存储的比较,如果相同更新右边图片的选中状态
    3. 在点击这个cell时,你需要做一个逻辑上的处理。如:判断当前点选的行是否在你创建的集合中存在,如果存在,可根据你的逻辑来做,比如你想取消当前这个选中的,你就可以从集合中删除,如果想保持现在的状态,可以不用做任何处理。如果点的是另外一行,与集合中的indexPath 比较,不同的话,可删除原有的,将新的添加进去。做完这里,你需要更新当前点选行的状态,代码:
    [self.tableView reloadRowAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];按我上面说的这几点来,可以解决你的问题。