繁体   English   中英

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

[英]how do I expand cell in tableview dynamically?

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

tableView:tableView:heightForRowAtIndexPath:

像元高度为40;

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

定义一个属性并@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行,因此这应该使单元格高度动画化。

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

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

在tableView:heightForRowAtIndexPath中,检查告诉您是否已按下按钮的变量,如果已按下则返回80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM