UITableViewDelete 删除

#import "ViewController.h"

#import "FWZViewController.h"

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>

{

    NSMutableArray *_arrayM;

    UITableView *_tableView;

}

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    //编辑模式

    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    [self getData];

    [self addUITableView];

}

- (void)getData{

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    NSArray *array = [userDefault objectForKey:@"Array"];

    if (array == nil) {

        _arrayM = [NSMutableArray array];

        for (int i = 0; i < 10; i ++) {

            NSString *str = [NSString stringWithFormat:@"我是第%d行",i];

            [_arrayM addObject:str];

            

        }

    }else{

        _arrayM = [NSMutableArray arrayWithArray:array];

    }

    }

- (void)addUITableView{

    _tableView  = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];

    _tableView.delegate = self;

    _tableView.dataSource = self;

    [self.view addSubview:_tableView];

}

#pragma mark - UITableViewDataSource

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

    return _arrayM.count;

}

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

    NSString *resuID = @"ID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:resuID];

    if (cell == nil) {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:resuID];

    }

    cell.textLabel.text = _arrayM[indexPath.row];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

//1.进入下一页,并传值过去

    FWZViewController *fwz = [[FWZViewController alloc]init];

    fwz.cellName = _arrayM[indexPath.row];

    [self.navigationController pushViewController:fwz animated:YES];

}

#pragma mark - 点击编辑按钮触发事件

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{

    //1.重写按钮编辑点击事件  首先要调用父类方法

    [super setEditing:editing animated:YES];

    //2.打开UItableview的编辑模式

    [_tableView setEditing:editing animated:YES];

    

}   //3.允许row编辑

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

    return YES;

}

    //4.设置编辑样式

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

//    UITableViewCellEditingStyleNone,

//    UITableViewCellEditingStyleDelete,

//    UITableViewCellEditingStyleInsert

    return UITableViewCellEditingStyleDelete;

}

    //5.提交编辑效果

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

    if (editingStyle ==  UITableViewCellEditingStyleDelete) {

        // 从数据源删除数据

        [_arrayM removeObjectAtIndex:indexPath.row];

        [self userDefault];

        //提交并刷新

        [_tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];

        

        

    }

}

#pragma mark - 编辑状态下可以移动cell

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

    

    NSLog(@"%ld %ld",(long)sourceIndexPath.row,(long)destinationIndexPath.row);

     NSLog(@"%ld %ld",(long)sourceIndexPath.row,(long)destinationIndexPath.row);

    // 取出目标数据

    NSString *str  = [_arrayM objectAtIndex:sourceIndexPath.row];

    //删除目标数据

    [_arrayM removeObjectAtIndex:sourceIndexPath.row];

    

    [_arrayM insertObject:str atIndex:destinationIndexPath.row];

    [self userDefault];

}

- (void)userDefault{

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    [userDefault setObject:_arrayM forKey:@"Array"];

    NSLog(@"%@",_arrayM);

}

FWZViewController.h

#import <UIKit/UIKit.h>

@interface FWZViewController : UIViewController

@property (nonatomic,assign)NSString *cellName;

@end

FWZViewController.m

#import "FWZViewController.h"

#define SCREEN_W self.view.frame.size.width

@interface FWZViewController ()

{

    UILabel *_label;

}

@end

@implementation FWZViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    [self addUIlabel];

}

- (void)addUIlabel{

    _label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, SCREEN_W,100)];

    _label.backgroundColor = [UIColor purpleColor];

    _label.text = self.cellName;

    _label.textColor = [UIColor blackColor];

    [self.view addSubview:_label];

}

原文地址:https://www.cnblogs.com/fanwenzheIOS/p/4973856.html