UITableView中Cell点击展开方法

你说的曾经没有我的故事 提交于 2020-03-07 13:31:17
定义一个属性记录selectedIndexPath用来记录选中的行的indexpath,在视图控制器初始化方法中初始化此属性为nil,
在tableView:didSelectRowAtIndexPath代理方法中:
首先deselect这个行
然后[tableView beginUpdate]
if(selectedIndexPath==nil)
{
selectedIndexPath=indexPath;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
else{
bool hasSelectedOtherRow=![self.selectedIndexPath isEqualTo:indexPath];
NSIndexPath *temp=self.selectedIndexPath;
self.selectedIndexPath=nil;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:temp] withRowAnimation:UITableViewRowAnimationAutomatic];
if(hasSelectedOtherRow){
  self.selectedIndexPath=indexPath;
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
  }
}
[tableView endUpdate];

在返回行高的代理方法中,如果indexPath等于self.selectedIndexPath, 返回一个特定的高度,否则返回缺省单元格高度。
在返回单元的代理方法中,如果indexPath等于self.selectedIndexPath,返回一个定制的单元(这个特定单元可以在视图控制器的viewdidload方法中初始化,不需要重用)否则返回缺省单元。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!