我只有一个cell
带有按钮的tableview
. cell
高度定义在
tableView:tableView:heightForRowAtIndexPath:
单元格高度为 40;
当我单击按钮时,如何将单元格高度更改为 80?谢谢你的帮助。
定义一个属性和@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 行,这应该为单元格高度设置动画。
这是UITableView 委托的文档。您需要设置一个委托,并设置函数为 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。请记住返回值是 CGFloat,因此返回 80.0 而不是 80。希望这会有所帮助。阅读文档中有关其他委托函数的更多信息...
当按下按钮时,您应该将变量设置为指示它已被按下的值,然后在 tableView 上调用 reloadData。这将使 tableView:heightForRowAtIndexPath 再次被调用。
在 tableView:heightForRowAtIndexPath 检查告诉你按钮是否被按下的变量,如果它被按下则返回 80