2015-06-10 124 views
0

我在我的表視圖控制器中有一個自定義表格視圖單元格。在我的單元格上有一個標籤,我想根據行信息顯示/隱藏。我可以根據行信息輕鬆顯示/隱藏標籤。但是,有可能根據該標籤是否存在來展開或摺疊tableview單元格的高度?我預計該標籤只有一行數據。定製uitableviewcell標籤隱藏/顯示

回答

0

使用-tableView:heightForRowAtIndexPath:

附上UITableViewDelegate您的UITableView的委託。並執行上述方法並根據單元格是否摺疊或展開來設置高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return (indexPath.row == _rowIndexWithLabel) ? tableView.rowHeight + _heightOfLabel : tableView.rowHeight; 
} 
+0

讓我們說故事板中,我當前的單元格高度是80 ..如果我要顯示額外的標籤,那麼我將高度增加10?對? – cableload

+0

@cableload我更新了我的答案 –

+0

謝謝!我還沒有嘗試過,但它應該工作! – cableload

1

使用heightForRowAtIndexPath呼籲有條件地返回0或高度,並調用reloadItemsAtIndexPath當你有膨脹/收縮。

+0

不要調用'-reloadItemsAtIndexPath:',而只需調用'[self.tableView beginUpdates]; [self.tableView endUpdates];'這需要在不重新加載單元格的情況下爲單元格高度設置動畫。 –

+0

@ChristianSchnorr哇我不知道這件事。這是記錄在任何地方? – rounak

+0

'您也可以使用此方法,然後使用endUpdates方法在不重新加載單元格的情況下對行高的更改進行動畫處理。 –

0

你應該實現自我大小的單元格。

- (CGFloat)tableView;(UITableVIew *)tableView estimatedHeightForRowAtIndexPath:(NSIndexpath *)indexPath { 
    return x.xx; // Whatever your average row height is 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

之後,您使用AutoLayout設置您的單元類,他們會告訴表格視圖他們將會是什麼樣的高度。如果您的標籤沒有內容,那麼您的單元格將進行調整,並且TableView將反映該內容。