2012-12-11 190 views
0

我有一個UITableView自定義細胞。我需要在單元格中顯示標題,地址,郵編,電話,電子郵件,網站和說明。所有這些信息都來自web服務器。我能夠顯示來自網絡服務器的內容。但是,如果任何內容爲空,則內容應該存在差距,如果描述太長,我無法顯示所有內容。如何根據服務器的內容更改單元格的高度?請幫忙。動態UITable細胞高度

例如:內容是印刷,如: 標題 地址 郵編 電話......

但是,如果地址是零那麼它看起來像: 標題

郵編 電話..

我有tableview:heightForRowAtIndexPath方法,但我無法根據單元格內容更新單元格高度。 對不起,壞的問題的格式

回答

0

您可以設置每個單元的高度與此委託方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
     { 
      NSString *text = [yourArray objectAtIndex:indexPath.row];// here just use your data array which you get from server 

      CGSize mTempSize = [text sizeWithFont:[UIFont fontWithName:fontName size:fontSize] constrainedToSize:constrainedToSize lineBreakMode:UILineBreakModeWordWrap]; 
      return mTempSize.height ; 
     } 

我希望這會幫助你...

+0

@Android_Newbie你也可以設置單元格的靜態的高度與浮點值的每一個細胞 –

0

首先,你需要設置的大小你標籤根據它的文本長度。有一些sizeWithFont方法可用來獲取字符串的大小。請參閱Apple Developer Documentation

如果您有單行標籤,您可以使用其中最簡單的標籤– sizeWithFont:。但是如果你有多行標籤,你應該使用– sizeWithFont:constrainedToSize:。這種方法可以讓你指定你想要標籤的最大尺寸。

其次,你必須返回計算的高度使用tableView:heightForRowAtIndexPath:

希望這有助於你的電池。

0

您的tableView:heightForRowAtIndexPath:通話將需要多部未華考慮到丟失的數據以及如何將單元的所有其餘部分將重新佈局,關閉它留下的空白。所以,你的實際呼叫在這裏將是不平凡的。

雖然新的facebook應用程序在這裏做了一個巧妙的竅門,可以讓您每次都可以省時省電。它在下載完所有的單元高度後,在將內容呈現給用戶之前,將其存儲在數據存儲中,並與數據本身一起存儲。這意味着實際的表格單元格渲染非常快速和光滑,因爲您無需重新佈局/重新計算每個應用程序運行/單元格重用時的單元格高度和佈局。

2

單元格調整大小可能會變得非常複雜,所以我建議你只使用一個表格視圖框架,比如「Sensible TableView」,其中所有單元格都會自動調整大小以適合內容。我相信他們現在也有一個免費版本。