2014-10-11 67 views
1

我的應用程序中有一些代碼可用於展開單元格。問題是,我還沒有想出如何只擴展已被挖掘的單元格。目前我的代碼只是擴展了所有的單元格。僅展開已被點擊的單元格

這裏是我的代碼:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    selectedRowIndex = indexPath 
    tableView.beginUpdates() 
    tableView.endUpdates() 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row == selectedRowIndex.row { 
     if cellTapped == false { 
      cellTapped = true 
      return 141 
     } else { 
      cellTapped = false 
      return 70 
     } 
    } 
    return 70 
} 

什麼我需要做的只是擴大被點擊單元格?

+0

你想細胞擴增到打開和關閉,這樣你可以有多個擴展出的細胞或者你想擴展一個新的單元來摺疊先前擴展的單元嗎? – Paulw11 2014-10-11 19:43:32

+0

你的代碼適合我。我沒有看到多個單元格正在展開。 – rdelmar 2014-10-11 19:45:40

+0

@ Paulw11我正在努力實現以後。 – user3746428 2014-10-11 19:52:56

回答

16

以下爲我工作。細胞是70高,挖掘時展開:

class ViewController: UITableViewController { 
    var cellTapped:Bool = true 
    var currentRow = 0; 

然後我微微以下兩種方法修改:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var selectedRowIndex = indexPath 
    currentRow = selectedRowIndex.row 

    tableView.beginUpdates() 
    tableView.endUpdates() 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row == currentRow { 
     if cellTapped == false { 
      cellTapped = true 
      return 141 
     } else { 
      cellTapped = false 
      return 70 
     } 
    } 
    return 70 
} 
+0

很好的答案。當視圖加載時,我的第一行被展開。有任何想法嗎? – Shades 2015-07-02 01:02:02

+0

更改var currentRow = 0到var currentRow = -1 – Shades 2015-07-02 01:48:02

+0

不錯,但如何改變動畫速度? – DeyaEldeen 2016-02-22 11:53:49