• 进击的UI--------------- UITableView&UITableView的移动


    1.UITableView补充 
    1⃣️:-(void)p_data
    @property (nonatomic,retain)NSMutableArray *dataArray;
    @property (nonatomic,assign)UITableViewCellEditingStyle editStyle;
    - (void)p_data{
        NSMutableArray *arr1 = @[@"范冰冰",@"宋慧乔",@"周迅"].mutableCopy;
        NSMutableArray *arr2 = @[@"bangbangbang",@"boomshakalaka",@"comeonboys",@"comeongirls"].mutableCopy;
        self.dataArray = [NSMutableArray array];
        [self.dataArray addObject:arr1];
        [self.dataArray addObject:arr2];
    }
    2⃣️:number
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
        return self.dataArray.count;
    }
    3⃣️:row
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        return [self.dataArray[section] count];
    }
    cell.textLabel.text = self.dataArray[indexPath.section][indexPath.row];
    2.UITableView修改
    1⃣️:让tableView处于编辑状态
    - (void)p_navigation{
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"SET" style:UIBarButtonItemStyleDone target:self action:@selector(rightAction:)];
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"ADD" style:UIBarButtonItemStyleDone target:self action:@selector(leftAction:)];
    }
    - (void)leftAction:(UIBarButtonItem *)sender{
        self.editStyle = UITableViewCellEditingStyleInsert;
        [self.rv.tableView setEditing:!self.rv.tableView.editing animated:YES];
    }
    - (void)rightAction:(UIBarButtonItem *)sender{
        self.editStyle = UITableViewCellEditingStyleDelete;
        [self.rv.tableView setEditing:!self.rv.tableView.editing animated:YES];
    }
    2⃣️:指定可以编辑的行
    - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
        return YES;
    }
    3⃣️:指定tableView编辑的样式
    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
            return self.editStyle;
    }
    4⃣️:完成编辑
    ①:修改数据流
    1.[self.dataArray[indexPath.section] removeObjectAtIndex:indexPath.row];
    2.[self.dataArray[indexPath.section] insertObject:@"New Peole" atIndex:indexPath.row + 1];
    ②:修改 UI
    1[self.rv.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
    2.NSIndexPath *newIndex = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];
       [self.rv.tableView insertRowsAtIndexPaths:@[newIndex] withRowAnimation:UITableViewRowAnimationAutomatic];
    ③:完整代码:
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
           if (self.editStyle == UITableViewCellEditingStyleDelete) {
             // 1.修改数据源
        [self.dataArray[indexPath.section] removeObjectAtIndex:indexPath.row];
        // 2.修改UI
        [self.rv.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
           }else if (self.editStyle == UITableViewCellEditingStyleInsert){
               // 添加
               [self.dataArray[indexPath.section] insertObject:@"New Peole" atIndex:indexPath.row + 1];
               NSIndexPath *newIndex = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];
               [self.rv.tableView insertRowsAtIndexPaths:@[newIndex] withRowAnimation:UITableViewRowAnimationAutomatic];}
    3.UItableView移动
    1⃣️:让tableView处于编辑状态
    同修改
    2⃣️:制定可以移动的行
    - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
        return YES;
    }
    3⃣️:完成移动
    ①:修改数据源
    // 拿出数据
        NSString *temp = self.dataArray[sourceIndexPath.section][sourceIndexPath.row];
        // 从数组中删掉
        [self.dataArray[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];
        // 插入到指定的位置
        [self.dataArray[destinationIndexPath.section] insertObject:temp atIndex:destinationIndexPath.row];
    ②:修改UI
    // 修改UI move方法
        [self.rv.tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
    ③:完整代码:
    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
        // 拿出数据
        NSString *temp = self.dataArray[sourceIndexPath.section][sourceIndexPath.row];
        // 从数组中删掉
        [self.dataArray[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];
        // 插入到指定的位置
        [self.dataArray[destinationIndexPath.section] insertObject:temp atIndex:destinationIndexPath.row];
        // 修改UI move方法
        [self.rv.tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
    }
    ④:不建议限制跨区域
    - (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath{
        if (sourceIndexPath.section == proposedDestinationIndexPath.section) {
            return proposedDestinationIndexPath;
        }else {
            return sourceIndexPath;
        }
    }
    4.UITableViewController
    1⃣️: 先注册
        [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
    2⃣️:
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
        cell.textLabel.text = @"123";
        return cell;
    }
  • 相关阅读:
    Docker系列三:Docker容器管理
    Docker系列一:Docker基本概念及指令介绍
    MySQL数据库“十宗罪”(十大经典错误案例)
    用数据驱动渠道推广(下:数据篇)
    用数据驱动渠道推广(上:工具篇)
    日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
    MySQL中的联合索引学习教程
    VC++NMAKE
    一元三次方程求根公式
    一元四次方程求根公式
  • 原文地址:https://www.cnblogs.com/sharkHZ/p/4984112.html
Copyright © 2020-2023  润新知