在cellForRowAtIndexPath中更新单元格不起作用

问题描述:

我有一个UITableView,它允许我在选择父级行时扩展子行。在cellForRowAtIndexPath中更新单元格不起作用

这是我的父行:

enter image description here

,如果我选择该行,然后它展开:

enter image description here

我要让孩子行元素缩进了一点所以它真的看起来下面的项目是孩子。

在我UITableViewCell我设置图标和标题给细胞增加时,该代码:

func setData(data: ExpandableCell,indexPath : NSIndexPath) 
    { 

     self.itemImg.image = UIImage(named: data.icon) 
     self.itemTitle.text = data.title 

     if(!data.isParent){ 

      // indent views 
      self.itemImg.frame.origin.x = 53 
      self.itemTitle.frame.origin.x = 85 
     } 

     if(data.childs.count == 0){ 

      // remove the expand - collpase icon when its child row 
      self.expandImg.removeFromSuperview() 
     } 

    } 

,我的问题是第一时间的子行显示它并没有缩进图标和标签。它的工作原理,直到第二次:

子行显示

第一次(没有工作):

enter image description here

第二次子行显示( 这次有效!

enter image description here

我是否必须设置某些东西才能始终工作?我已经这样做了:SetNeedDisplay()但是门槛具有相同的行为。

的问题是,你的逻辑是不完整的:

if(!data.isParent){ 

精细,但如果data.isParent是真的吗?那么你不知道该怎么做。请记住,单元格被重用。您需要准备好空的已填充的单元格并对其进行重新配置。

+0

我只是修复,但我仍然有相同的行为。任何线索@matt? – VAAA

+0

我不得不寻找其他解决方案,我所做的是在单元格中添加其他两个元素,一个缩进子图像和一个缩进子标签,然后隐藏其父行的缩进并显示子元素时显示。现在它似乎工作......真的是一个很奇怪的问题。它对我没有意义。 – VAAA

+0

这听起来不像我,你真的做了我所建议的...... – matt