2016-07-17 51 views
1

我有一個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()但是門檻具有相同的行爲。

回答

1

的問題是,你的邏輯是不完整的:

if(!data.isParent){ 

精細,但如果data.isParent是真的嗎?那麼你不知道該怎麼做。請記住,單元格被重用。您需要準備好空的已填充的單元格並對其進行重新配置。

+0

我只是修復,但我仍然有相同的行爲。任何線索@matt? – VAAA

+0

我不得不尋找其他解決方案,我所做的是在單元格中添加其他兩個元素,一個縮進子圖像和一個縮進子標籤,然後隱藏其父行的縮進並顯示子元素時顯示。現在它似乎工作......真的是一個很奇怪的問題。它對我沒有意義。 – VAAA

+0

這聽起來不像我,你真的做了我所建議的...... – matt

相關問題