您的位置:首页 > 产品设计 > UI/UE

UITableViewDelete 删除

2015-11-18 11:02 393 查看
#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];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: