我们可以在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
。
答
可以使用heightForRowAtIndexPath
为连续
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
您可以将支票NSIndexPath
,并返回height
该特定indexpath
答
是你可以做的设置高度,但你需要要保存所选行的索引路径,并且必须通过负值初始化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;
}
您应该使'selectedRow'为'NSIndexPath'来支持一个包含多个节的表。 – jszumski 2013-05-13 12:51:22