文末附上Demo下载地址。
记录下今天开发里面碰到的,(大神同事指点)。需要点击某种支付方式,自定义的插入一个自定义的cell到TableView里面去。上张图片吧。
比如点击现金,左侧便新增加一个自定义的cell。
首先想到的是用TableView自带的 比如添加cell的方法。
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
又比如删除cell的方法
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; indexPath[testTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]。
但是后来删除cell的时候。估计数据处理上有问题。所以下面说下后来处理数据的另外一方法。
在制定位置插入Cell。(后面会上传Demo。欢迎下载。)
先说下思路吧。
- 新建需要加入的cell相关View文件+对应的xib。
在cellForRowAtIndexPath
方法里面 对应的Section cell的相关位置进行部署。
比如代码里面的
PayTypeCell *paycell = [[[NSBundle mainBundle] loadNibNamed:@"PayTypeCell" owner:self options:nil]firstObject];
[paycell loadcellDataPayModel:indexPaths[indexPath.row-3] index:indexPath.row-3];
paycell.delegate = self;
return paycell;
其中loadcellDataPayModel:indexPaths
方法是通过新建的模型做的转化。
思路:
先新建可变数组。
- 增加cell的时候,将cell样式加入到可变数组中。
- 执行 TableView.ReloadData方法。
下面简要说下删除Cell的方法
因为删除按钮是定义在cell上面。而我们需要将选中的这个cell的tag值传给主控制器。
所以需要用到代理传值。
使用这个代理将这个cell的tag值传给控制器。点击右边的删除按钮。
主控制器继承代理。实现代理方法。
-(void)deleteCellWithTag:(NSInteger)tagNum{
[indexPaths removeObjectAtIndex:tagNum];
[self.leftTableView reloadData];
}
最重要的一步是 [indexPaths removeObjectAtIndex:tagNum]
;
这样TableView
在reloadData
去实现tableView
的代理方法的时候才能将这种可变数组保持一致。
记录下。大家共同学习进步。
简单的写了个相同的Demo。有喜欢的帮忙Star下哟。
Demo下载地址
另外分享下mac上传项目到Github上的比较好的几篇博客。 因为通俗简单。
上传本地项目到Github