UITabView 的 插入,删除,移动 ????咋就有问题了

[复制链接]
111 6
1.问题是插入和删除不能一起操作


2.移动,这个,这个咋整都好使,


3.下面是原代码,哪位给帮忙调一下。项目急需啊?


4.附近中也有直接




  • //
  • //? AddOrDeleteVC.m
  • //? Fanwenzhe
  • //
  • //? Created by apple on 2018/4/24.
  • //? Copyright ? 2018年 范文哲. All rights reserved.
  • //


  • #import "AddOrDeleteVC.h"


  • #import "AddOrDeleteCell.h"


  • static NSString *addOrDeleteCellID = @"addOrDeleteCellID";


  • @interface AddOrDeleteVC (){
  • NSMutableArray *array;
  • ? ? Boolean iSEditor;// 是否编辑
  • }


  • @end


  • @implementation AddOrDeleteVC


  • - (void)viewDidLoad {
  • ? ? [super viewDidLoad];
  • array = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
  • _myTabView.delegate = self;
  • _myTabView.dataSource = self;
  • ? ? [_myTabView registerNib:[UINib nibWithNibName:@"AddOrDeleteCell" bundle:nil] forCellReuseIdentifier:addOrDeleteCellID];

  • }


  • - (void)didReceiveMemoryWarning {
  • ? ? [super didReceiveMemoryWarning];
  • // Dispose of any resources that can be recreated.
  • }


  • /*
  • #pragma mark - Navigation


  • // In a storyboard-based application, you will often want to do a little preparation before navigation
  • - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  • ? ? // Get the new view controller using [segue destinationViewController].
  • ? ? // Pass the selected object to the new view controller.
  • }
  • */
  • - (IBAction)button:(id)sender{
  • ? ? if (sender == _backBtn) {
  • ? ? ? ? [self dismissViewControllerAnimated:YES completion:nil];
  • ? ? }
  • ? ? if (sender == _editorBtn) {
  • iSEditor = !iSEditor;
  • _editorBtn.selected = iSEditor;
  • ? ? ? ? [_myTabView setEditing:iSEditor animated:YES];
  • ? ? }
  • }
  • - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
  • AddOrDeleteCell *cell = [tableView dequeueReusableCellWithIdentifier:addOrDeleteCellID];
  • ? ? if (cell == nil) {
  • ? ? ? ? cell = [[AddOrDeleteCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:addOrDeleteCellID];
  • ? ? }
  • ? ? [cell getData:nil];
  • ? ? return cell;
  • }


  • - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  • ? ? return array.count;
  • }
  • #pragma mark - 点击
  • - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  • //? ? [tableView setEditing:YES animated:YES];
  • }






  • #pragma mark - 删除
  • //1.先要设Cell可编辑
  • - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  • return YES;
  • }
  • //2.定义编辑样式
  • - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
  • //? ? return UITableViewCellEditingStyleDelete ;
  • return UITableViewCellEditingStyleInsert ;
  • }
  • //3.修改编辑按钮文字
  • - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
  • return @"删除";
  • }
  • //4.设置进入编辑状态时,Cell不会缩进
  • - (BOOL)tableView: (UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
  • return YES;
  • }
  • //5.点击删除
  • #pragma mark - 移动
  • - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  • if (editingStyle==UITableViewCellEditingStyleDelete){
  • //? ? ? ? 获取选中删除行索引值
  • ? ? ? ? NSInteger row = [indexPath row];
  • //? ? ? ? 通过获取的索引值删除数组中的值
  • ? ? ? ? [array removeObjectAtIndex:row];
  • //? ? ? ? 删除单元格的某一行时,在用动画效果实现删除过程
  • ? ? ? ? [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
  • ? ? }
  • if(editingStyle==UITableViewCellEditingStyleInsert)
  • ? ? {
  • ? ? ? ? NSInteger row = [indexPath row];
  • ? ? ? ? NSArray *insertIndexPath = [NSArray arrayWithObjects:indexPath, nil];
  • ? ? ? ? [array insertObject:@"5" atIndex:row];
  • ? ? ? ? [tableView insertRowsAtIndexPaths:insertIndexPath withRowAnimation:UITableViewRowAnimationRight];
  • ? ? }
  • }


  • #pragma mark - 移动
  • //1.返回YES,表示支持单元格的移动
  • -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
  • {
  • return YES;
  • }
  • -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
  • {
  • //? ? 需要的移动行
  • ? ? NSInteger fromRow = [sourceIndexPath row];
  • //? ? 获取移动某处的位置
  • ? ? NSInteger toRow = [destinationIndexPath row];
  • //? ? 从数组中读取需要移动行的数据
  • ? ? id object = [array objectAtIndex:fromRow];
  • //? ? 在数组中移动需要移动的行的数据
  • ? ? [array removeObjectAtIndex:fromRow];
  • //? ? 把需要移动的单元格数据在数组中,移动到想要移动的数据前面
  • ? ? [array insertObject:object atIndex:toRow];
  • }


  • @end
  • ?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

6 个评论

tdswcdma  新手上路  发表于 2018-5-20 15:08:11  | 显示全部楼层
谢谢了,有demo吗,发我一个,急需啊

举报 使用道具

回复
bud19  新手上路  发表于 2018-5-20 16:14:11  | 显示全部楼层
这个,好像还真没有reload。不过,能单独进行删除,添加操作的。就是不能一会儿删除,一会儿添加

举报 使用道具

回复
lanse888  新手上路  发表于 2018-5-20 17:16:32  | 显示全部楼层
我搜了下 reload。 发现并没有。
那你添加删除都不reload  这个不会变吧

举报 使用道具

回复
woshishui6312  新手上路  发表于 2018-5-20 18:02:42  | 显示全部楼层
这种 最后一行或者第一行cell返回UITableViewCellEditingStyleInsert  单独的cell插入样式  其他cell显示内容 返回UITableViewCellEditingStyleDelete就可以   你要每行都可以插入数据的话  那就自定义加入按钮事件

举报 使用道具

回复
iaalyjnui  新手上路  发表于 2018-5-20 18:17:39  | 显示全部楼层
1.问题是插入和删除不能一起操作


2.移动,这个,这个咋整都好使,


3.下面是原代码,哪位给帮忙调一下。项目急需啊?


4.附近中也有直接




  • //
  • //? AddOrDeleteVC.m
  • //? Fanwenzhe
  • //
  • //? Created by apple on 2018/4/24.
  • //? Copyright ? 2018年 范文哲. All rights reserved.
  • //


  • #import "AddOrDeleteVC.h"


  • #import "AddOrDeleteCell.h"


  • static NSString *addOrDeleteCellID = @"addOrDeleteCellID";


  • @interface AddOrDeleteVC ()<UITableViewDataSource,UITableViewDelegate>{
  • NSMutableArray *array;
  • ? ? Boolean iSEditor;// 是否编辑
  • }


  • @end


  • @implementation AddOrDeleteVC


  • - (void)viewDidLoad {
  • ? ? [super viewDidLoad];
  • array = [NSMutableArray arrayWithObjects:@&quot;1&quot;,@&quot;2&quot;,@&quot;3&quot;,@&quot;4&quot;,@&quot;5&quot;,@&quot;6&quot;, nil];
  • _myTabView.delegate = self;
  • _myTabView.dataSource = self;
  • ? ? [_myTabView registerNib:[UINib nibWithNibName:@&quot;AddOrDeleteCell&quot; bundle:nil] forCellReuseIdentifier:addOrDeleteCellID];

  • }


  • - (void)didReceiveMemoryWarning {
  • ? ? [super didReceiveMemoryWarning];
  • // Dispose of any resources that can be recreated.
  • }


  • /*
  • #pragma mark - Navigation


  • // In a storyboard-based application, you will often want to do a little preparation before navigation
  • - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  • ? ? // Get the new view controller using [segue destinationViewController].
  • ? ? // Pass the selected object to the new view controller.
  • }
  • */
  • - (IBAction)button:(id)sender{
  • ? ? if (sender == _backBtn) {
  • ? ? ? ? [self dismissViewControllerAnimated:YES completion:nil];
  • ? ? }
  • ? ? if (sender == _editorBtn) {
  • iSEditor = !iSEditor;
  • _editorBtn.selected = iSEditor;
  • ? ? ? ? [_myTabView setEditing:iSEditor animated:YES];
  • ? ? }
  • }
  • - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
  • AddOrDeleteCell *cell = [tableView dequeueReusableCellWithIdentifier:addOrDeleteCellID];
  • ? ? if (cell == nil) {
  • ? ? ? ? cell = [[AddOrDeleteCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:addOrDeleteCellID];
  • ? ? }
  • ? ? [cell getData:nil];
  • ? ? return cell;
  • }


  • - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  • ? ? return array.count;
  • }
  • #pragma mark - 点击
  • - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  • //? ? [tableView setEditing:YES animated:YES];
  • }






  • #pragma mark - 删除
  • //1.先要设Cell可编辑
  • - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  • return YES;
  • }
  • //2.定义编辑样式
  • - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
  • //? ? return UITableViewCellEditingStyleDelete ;
  • return UITableViewCellEditingStyleInsert ;
  • }
  • //3.修改编辑按钮文字
  • - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
  • return @&quot;删除&quot;;
  • }
  • //4.设置进入编辑状态时,Cell不会缩进
  • - (BOOL)tableView: (UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
  • return YES;
  • }
  • //5.点击删除
  • #pragma mark - 移动
  • - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  • if (editingStyle==UITableViewCellEditingStyleDelete){
  • //? ? ? ? 获取选中删除行索引值
  • ? ? ? ? NSInteger row = [indexPath row];
  • //? ? ? ? 通过获取的索引值删除数组中的值
  • ? ? ? ? [array removeObjectAtIndex:row];
  • //? ? ? ? 删除单元格的某一行时,在用动画效果实现删除过程
  • ? ? ? ? [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
  • ? ? }
  • if(editingStyle==UITableViewCellEditingStyleInsert)
  • ? ? {
  • ? ? ? ? NSInteger row = [indexPath row];
  • ? ? ? ? NSArray *insertIndexPath = [NSArray arrayWithObjects:indexPath, nil];
  • ? ? ? ? [array insertObject:@&quot;5&quot; atIndex:row];
  • ? ? ? ? [tableView insertRowsAtIndexPaths:insertIndexPath withRowAnimation:UITableViewRowAnimationRight];
  • ? ? }
  • }


  • #pragma mark - 移动
  • //1.返回YES,表示支持单元格的移动
  • -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
  • {
  • return YES;
  • }
  • -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
  • {
  • //? ? 需要的移动行
  • ? ? NSInteger fromRow = [sourceIndexPath row];
  • //? ? 获取移动某处的位置
  • ? ? NSInteger toRow = [destinationIndexPath row];
  • //? ? 从数组中读取需要移动行的数据
  • ? ? id object = [array objectAtIndex:fromRow];
  • //? ? 在数组中移动需要移动的行的数据
  • ? ? [array removeObjectAtIndex:fromRow];
  • //? ? 把需要移动的单元格数据在数组中,移动到想要移动的数据前面
  • ? ? [array insertObject:object atIndex:toRow];
  • }


  • @end
  • ?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表