在最近的项目开发,为了更好的用户体验,项目决定使用一些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和大家交流,在这个开发中我充分认识到我们对底层研究的重要性!!!
欢迎大家一起交流!!!
网友评论