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

尉迟安民
2023-12-01
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;
}

转载于:https://www.cnblogs.com/sharkHZ/p/4984112.html

 类似资料: