关于cell点击展开收缩的总结

在最近的项目开发,为了更好的用户体验,项目决定使用一些cell默认展开一条,并具有点击展开和收缩的功能。经过查看资料,后来通过cell 属性实现了该功能,在开发中也遇到了一些坑,在此总结,以供参考。

@property(nonatomic,strong)NSIndexPath*selectedIndex;

首先声明一个选中的index对象,注意:这里的语义属行,在刚开始我用的assign在一些机型上实现。

NSIndexPath*indexPath = [NSIndexPathindexPathForRow:0inSection:0];self.selectedIndex= indexPath;


设置默认选中状态,即选中的cell的index.

if([indexPath isEqual: _selectedIndex] && _selectedIndex !=nil) {if(_isOpen ==YES) {                  projectCell.isOpen=self.isOpen;            }else{                  projectCell.isOpen=NO;            }        }else{            projectCell.isOpen=NO;        }在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath设置选中cell要做的事情

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {NSArray*indexPaths = [NSArrayarrayWithObject:indexPath];if(self.selectedIndex!=nil&& [indexPath isEqual: _selectedIndex]) {        _isOpen = !_isOpen;    }elseif(self.selectedIndex!=nil&& ![indexPath isEqual: _selectedIndex]) {        indexPaths = [NSArrayarrayWithObjects:indexPath,_selectedIndex,nil];        _isOpen =YES;    }//记下选中的索引self.selectedIndex= indexPath;//刷新[tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];}


设置cell选中时的操作,当然还用要计算行高,这些我会稍后将写个demo上传到GitHub和大家交流,在这个开发中我充分认识到我们对底层研究的重要性!!!

欢迎大家一起交流!!!

你可能感兴趣的:(关于cell点击展开收缩的总结)