0

我只有一个cell带有按钮的tableview. cell高度定义在

tableView:tableView:heightForRowAtIndexPath:

单元格高度为 40;

当我单击按钮时,如何将单元格高度更改为 80?谢谢你的帮助。

4

3 回答 3

3

定义一个属性和@synthesize它:

@property (retain, nonatomic) NSIndexPath* selectedRowIndex;

覆盖didSelectRowAtIndexPathheightForRowAtIndexPath方法:

- (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 行,这应该为单元格高度设置动画。

于 2012-11-08T16:33:33.663 回答
1

这是UITableView 委托的文档。您需要设置一个委托,并设置函数为 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。请记住返回值是 CGFloat,因此返回 80.0 而不是 80。希望这会有所帮助。阅读文档中有关其他委托函数的更多信息...

于 2012-11-08T16:30:26.570 回答
0

当按下按钮时,您应该将变量设置为指示它已被按下的值,然后在 tableView 上调用 reloadData。这将使 tableView:heightForRowAtIndexPath 再次被调用。

在 tableView:heightForRowAtIndexPath 检查告诉你按钮是否被按下的变量,如果它被按下则返回 80

于 2012-11-08T16:23:52.213 回答