2015-09-04 56 views
1

在我的iOS應用程序中,有一個靜態單元格的表格視圖控制器,其中包含三種不同類型的單元格,其樣式爲字幕。其中一個應該比另外兩個高得多,因爲它應該包含很長的文本。因此,在其大小檢查器中,我將高度設置爲100,但是當我通過其標識符在代碼中創建新單元格時,高度始終是默認單元格。Swift/XCode 6.4:如何以編程方式更改表格視圖控制器中單元格的高度

我該如何改變它?我讀過,我應該重寫此方法:

override func tableView(tableView: UITableView, 
    heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

     return 100 //Whatever fits your need for that cell 
} 

但我不知道如何使用它。你能解釋一下嗎? enter image description here

+0

可能重複的高度[的tableView細胞高度...如何定製呢?](http://stackoverflow.com/questions/3737218/tableview-cell-height-how - 定製它) –

回答

7

正如你說,你tableview細胞是靜態,所以你知道哪個小區有更多的高度,傳遞heightForRowAtIndexPath該小區的indexpath並從那裏返回單元格的預期高度。 假設你的第一小區是有更多的高度,然後用heightForRowAtIndexPath這樣

func tableView(tableView: UITableView, 
    heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     if indexPath.row == 1 { 
      return 100 //Whatever fits your need for that cell 
     } else { 
      return 50 // other cell height 
     } 
} 

無需創建三個不同的原型細胞,剛剛創建的細胞,這將是足夠的。

+0

哦,它的工作原理,謝謝。但爲什麼我不能通過故事板設置它?這會容易得多...原諒我的無知,我對ios和xcode以及swift很陌生。請解釋一下,如果你想 – user1576208

+0

你在你的代碼中使用'heightForRowAtIndexPath'。 – Rajat

+0

是的,我剛剛使用它,它的工作原理......我只是想知道爲什麼設置故事板是不夠的,爲什麼還需要在您的cellForRowAtIndexPath中使用 – user1576208

0

爲什麼不在界面構建器中使用2個不同的TableViewCells並在cellForRowAtIndexPath中選擇正確的一個?

這是最簡單的方法,您可以在必要時區分兩種類型之間的差異。

+0

Ehm,這就是我所做的。看看我的問題,我已經上傳了截圖。我有3個不同的TableViewCells ...最後一個更大,但它完全被忽略。我想我錯過了故事板中的一些設置...或者可能是一些愚蠢的錯誤。是對的? – user1576208

+0

你使用的是正確的原型單元嗎?你可能每次加載相同的一個 – Glenn

+0

我認爲是因爲我用正確的標識符來調用它。或者你的意思是什麼? – user1576208

2

您可以執行heightForRowAtIndexPath,正如您在文章中提到的,並獲取cellForRowAtIndexPath的單元格。然後設置爲根據的reuseIdentifier

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if let cell = tableView.cellForRowAtIndexPath(indexPath) { 
    if cell.reuseIdentifier == "SpecialCell" { 
     return 100.0 
    } 
    } 
    return 44.0 
} 
相關問題