cell
中只有一个tableview
按钮。 cell
高度在
tableView:tableView:heightForRowAtIndexPath:
细胞高度为40;
单击按钮时,如何将单元格高度更改为80? 谢谢你的帮助。
答案 0 :(得分:3)
定义属性并@synthesize
:
@property (retain, nonatomic) NSIndexPath* selectedRowIndex;
覆盖didSelectRowAtIndexPath
和heightForRowAtIndexPath
方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(selectedRowIndex && indexPath.row == selectedRowIndex.row) {
//[_yourTableView deselectRowAtIndexPath:indexPath animated:YES]; If you only want the cell to get bigger
selectedRowIndex = nil;
}
else { self.selectedRowIndex = [indexPath retain]; }
[tableView beginUpdates];
[tableView endUpdates];
}
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (tableView == _yourTableView) {
if(selectedRowIndex && indexPath.row == selectedRowIndex.row){
return 80;
}
// Cell isn't selected so return single height
return 40;
}
else return 0;
}
由于beginUpdates和endUpdates行,这应该为单元格高度设置动画。
答案 1 :(得分:1)
这是UITableView Delegate的the documentation。你需要设置一个委托并设置函数是 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。记住返回值是CGFloat,所以返回80.0而不是80.希望这有帮助..阅读文档中有关其他委托函数的更多信息......
答案 2 :(得分:0)
按下按钮时,您应该将变量设置为表示已按下的值,然后在tableView上调用reloadData。这将使tableView:heightForRowAtIndexPath再次被调用。
在tableView:heightForRowAtIndexPath中检查告诉您按钮是否被按下的变量,如果已按下则返回80