2015-06-10 92 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将反映该内容。