我有以下設置:UITableView與自定義UITableViewCell實現。在每個單元格中我都有一個UILabel和一個UIButton。當表格第一次顯示時,在每個單元格中,UILabel的行數設置爲1,所有單元格都有固定的高度(在我的情況下爲60 px)。當單元格中的按鈕被輕敲時,UILabel的行數被設置爲0並且自動換行打開,從而有效地擴展表格單元格。UITableView - 細胞本身控制動態細胞高度
現在,問題是隻有UITableViewCell的實現知道標籤是否展開 - 因此單元高度應該是多少。但是,所有者文件是表的數據源。
我無法得到如何設置這個。任何想法都表示讚賞。這裏
更新是從我的代碼
提取物在自定義的UITableViewCell實現:
- (float)requiredHeight
{
if(isFull)
{
CGSize labelSize = [LblTitle.text sizeWithFont: [LblContent font]
constrainedToSize: CGSizeMake(300.0f, 300.0f)
lineBreakMode: UILineBreakModeTailTruncation];
return 42.0f + labelSize.height;
}
else
{
return 60.0f;
}
}
在所有者文件(的UITableViewDelegate):
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
OOCommentCell *cell = (OOCommentCell*)[tableView cellForRowAtIndexPath:indexPath];
return [cell requiredHeight];
}
但是這個隨機產生的無限循環或在BAD_ACCESS_EXCEPTION中。
我在UITableViewCell裏面使用了一個UIWebView,因此在調用heightForRowAtIndexPath時它不能告訴高度。 我所做的是將單元格設置爲UIWebView的代理,並在webViewDidFinishLoad方法中調用[webView sizeToFit]; webView.hidden = NO; [tableViewController setRowHeight:webView.bounds.size.height forRowId:id];並在UITableViewController的setRowHeight方法中,我調用了你提供的這兩個方法:[tableView beginUpdates]; [tableView endUpdates];它的工作原理。 – asdfasdfads 2014-01-11 20:40:42