一个非常简单的问题......
我们可以在UItableView中更改当前行(被点击的行)的高度吗?
注意:我不希望对剩余行的大小产生任何影响。
答案 0 :(得分:7)
是的,你可以。您需要一个保留最后一个选定行的变量。例如:
@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
。
答案 1 :(得分:1)
您可以使用heightForRowAtIndexPath
来设置行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
您可以对NSIndexPath
进行检查,然后针对特定height
indexpath
答案 2 :(得分:0)
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row == rowtochangeheight) {
return 60;
}
else
{
return 44;
}
}
答案 3 :(得分:0)
是的,你可以这样做,但你需要保存所选行的索引路径,你必须按负值初始化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;
}