如何动态扩展tableview中的单元格?

时间:2012-11-08 16:21:50

标签: ios tableview

cell中只有一个tableview按钮。 cell高度在

中定义
tableView:tableView:heightForRowAtIndexPath:

细胞高度为40;

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

3 个答案:

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

答案 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