我们可以在UITableView中更改当前行的高度吗?

问题描述:

一个非常简单的问题...我们可以在UITableView中更改当前行的高度吗?

我们可以在UItableView中只改变当前行(被点击的行)的高度吗?

注意:我不希望对剩余行的大小有任何影响。

是的,你可以。您需要一个保留最后选定行的变量。对于前:

@property (nonatomic, assign) NSInteger selectedRow; 

... 然后实现方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(indexPath.row == self.selectedRow) { 
     return 100.; 
    } 

    return 44.; 
} 

,然后更新方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    if(self.selectedRow == indexPath.row) 
     self.selectedRow = -1; 
    else 
     self.selectedRow = indexPath.row; 

    //The magic that will call height for row and animate the change in the height 
    [tableView beginUpdates]; 
    [tableView endUpdates]; 
} 

注意:初始化你的self.selectedRow-1值在开始时默认为0

+0

您应该使'selectedRow'为'NSIndexPath'来支持一个包含多个节的表。 – jszumski 2013-05-13 12:51:22

可以使用heightForRowAtIndexPath为连续

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

您可以将支票NSIndexPath,并返回height该特定indexpath

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(indexPath.row == rowtochangeheight) { 
     return 60; 
    } 
    else 
    { 
     return 44; 
    } 


} 
+0

rowtochangeheight ??? – nitz19arg 2013-05-13 11:12:42

+0

它涉及到你想改变高度简单的行 – iEinstein 2013-05-13 11:14:56

是你可以做的设置高度,但你需要要保存所选行的索引路径,并且必须通过负值初始化selectedRow变量。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    selectedRow = indexpath.row; 
    [tblView reloadData]; 
} 

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == selectedRow) 
     return 150.0f; 

    return 30; 
}