博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITableView 编辑模式(增加-删除-移动---自定义左滑 title) xib cell
阅读量:5943 次
发布时间:2019-06-19

本文共 6060 字,大约阅读时间需要 20 分钟。

参考:  http://www.open-open.com/lib/view/open1430008922468.html

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    

    self.dataArray = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4",@"5",@"6",@"7"]];

    

    [self createView];

    self.view.backgroundColor = [UIColor greenColor];

}

 

-(void)createView{

    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    self.tableView.delegate = self;

    self.tableView.dataSource = self;

    

    [self.view addSubview:self.tableView];

    

    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ce"];

//    self.tableView.bounces = 0;

//    self.tableView.showsVerticalScrollIndicator = 0;

    

    self.tableView.tableFooterView = [[UIView alloc]init];//没有的不展示 line

    

   

    UIBarButtonItem *deleteBar = [[UIBarButtonItem alloc]initWithTitle:@"删除" style: UIBarButtonItemStylePlain target:self action:@selector(deleteBtn)];

    self.navigationItem.rightBarButtonItem = deleteBar;

    

 

    UIBarButtonItem *addBar1 = [[UIBarButtonItem alloc]initWithTitle:@"添加1  " style: UIBarButtonItemStylePlain target:self action:@selector(addBtn)];

    UIBarButtonItem *addBar2 = [[UIBarButtonItem alloc]initWithTitle:@"  添加2(模式)" style: UIBarButtonItemStylePlain target:self action:@selector(addBtn2)];

 

    self.navigationItem.leftBarButtonItems = @[addBar1,addBar2];

}

 

//删除(进入编辑模式)

- (void)deleteBtn{

    self.isAdd = NO;

    

    static int flog = 1;

    flog ^= 1;

    if (flog) {

        [self.tableView setEditing:YES animated:YES];

        

    }else{

        [self.tableView setEditing:NO animated:YES];

 

    }

    

}

//增加1

- (void)addBtn{

    

    [self.dataArray addObject:@"新增一条"];

    // <指定行> 添加

    NSIndexPath * indexPath = [NSIndexPath indexPathForRow:self.dataArray.count - 1 inSection:0];

    [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationRight];

    

}

- (void)addBtn2{

    self.isAdd = YES;

    

    

    static int flog = 1;

    flog ^= 1;

    if (flog) {

        [self.tableView setEditing:YES animated:YES];

        

    }else{

        [self.tableView setEditing:NO animated:YES];

        

    }

    

}

#pragma mark --dataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    return 1;

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    

    return self.dataArray.count;

}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ce"];

    

    cell.textLabel.text = self.dataArray[indexPath.row];

    

    return cell;

}

 

 

 

#pragma mark -- delegate 编辑模式(增加/删除/移动)

 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{

    

    return YES;

}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{

    

    return YES;

}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    if (self.isAdd) {

        return UITableViewCellEditingStyleInsert; //添加

 

    }else{

        return UITableViewCellEditingStyleDelete;   //删除

    }

    

    

}

 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    

     NSInteger sourceRow = indexPath.row;

    //删除

    if (editingStyle == UITableViewCellEditingStyleDelete) {

       

        [self.dataArray removeObjectAtIndex:sourceRow];

        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationLeft];

    }

    //添加(点击+号按钮)

    else if (editingStyle == UITableViewCellEditingStyleInsert){

        

        [self.dataArray insertObject:@"新增" atIndex: sourceRow+1];

        //在指定位置插入

        NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:sourceRow+1 inSection:indexPath.section];

        [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:newIndexPath, nil] withRowAnimation:UITableViewRowAnimationRight];

        

    }

    

  

}

 

//移动(只有写了这个方法才能移动,但此时不能左滑)

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{

    NSInteger sourceRow = sourceIndexPath.row;

    NSInteger destinRow = destinationIndexPath.row;

    

    NSString *moveObject = [self.dataArray objectAtIndex:sourceRow];

    

    [self.dataArray removeObjectAtIndex:sourceRow];

    [self.dataArray insertObject:moveObject atIndex:destinRow];  //改变在<对象>数组中的位置

    

}

 

#pragma mark --左滑选项(title可自已定义)

-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    //1.删除

    UITableViewRowAction *deleteRoWAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" 删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

//title可自已定义

        NSLog(@"点击了-删除");

        

        [self.dataArray removeObjectAtIndex:indexPath.row];

        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationLeft];

 

    }];

    deleteRoWAction.backgroundColor = [UIColor greenColor]; //定义button的颜色,默认是红色的

    

    //test

    UITableViewRowAction *test = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" 置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

//title可自已定义

        NSLog(@"点击了-test");

    }];

    test.backgroundColor = [UIColor blueColor];

    

    return @[deleteRoWAction,test];//最后返回这俩个RowAction 的数组

}

 

 

 

 

 

 

 

//注释:从 xib 加载 cell 的方式

方法一:

第一步:[self.collectionView registerNib:[UINib nibWithNibName:@"QGLShareBtnCell" bundle:nil] forCellWithReuseIdentifier:@"QGLShareBtnCell”];第二步:QGLShareBtnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QGLShareBtnCell" forIndexPath:indexPath];

方法二:

QGLIMGroupListCell *cell = (QGLIMGroupListCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];    if (cell == nil) {        cell= (QGLIMGroupListCell *)[[[NSBundle  mainBundle]  loadNibNamed:@"QGLIMGroupListCell" owner:self options:nil]  lastObject];    }

 

 

//另外: 从xib 加载视图 UIView

UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"QGLIMGroupListCell" owner:self options:nil] lastObject];

// 获取 view 上的自视图,通过 tag 获取 UIButton *btn  = [view viewWithTag:111];

 

 

 

转载于:https://www.cnblogs.com/daxueshan/p/6281938.html

你可能感兴趣的文章
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
autoconf,automake,libtool
查看>>
jQuery的技巧01
查看>>
基于泛型实现的ibatis通用分页查询
查看>>
gopacket 使用
查看>>
AlertDialog对话框
查看>>
我的友情链接
查看>>
linux安全---cacti+ntop监控
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
nagios配置监控的一些思路和工作流程
查看>>