TableView中表格的添加与删除

  1 //
  2 //  HMViewController.m
  3 //  06-表格的修改
  4 //
  5 //  Created by apple on 14-8-19.
  6 //  Copyright (c) 2014年 itcast. All rights reserved.
  7 //
  8 
  9 #import "HMViewController.h"
 10 
 11 @interface HMViewController () <UITableViewDataSource, UITableViewDelegate>
 12 /** 数据列表 */
 13 @property (nonatomic, strong) NSMutableArray *dataList;
 14 @property (nonatomic, strong) UITableView *tableView;
 15 @end
 16 
 17 @implementation HMViewController
 18 
 19 - (UITableView *)tableView
 20 {
 21     if (_tableView == nil) {
 22         _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
 23         
 24         _tableView.dataSource = self;
 25         _tableView.delegate = self;
 26         
 27         [self.view addSubview:_tableView];
 28     }
 29     return _tableView;
 30 }
 31 
 32 - (NSMutableArray *)dataList
 33 {
 34     if (_dataList == nil) {
 35         _dataList = [NSMutableArray arrayWithObjects:@"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwu", @"zhangsan", @"lisi", @"wangwuwangwuwangwuwangwuwangwu", nil];
 36     }
 37     return _dataList;
 38 }
 39 
 40 - (void)viewDidLoad
 41 {
 42     [super viewDidLoad];
 43     
 44     [self tableView];
 45 
 46     // 开始编辑,一旦editing == YES就默认开启删除模式
 47     self.tableView.editing = YES;
 48 }
 49 
 50 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 51 {
 52     return self.dataList.count;
 53 }
 54 
 55 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 56 {
 57     static NSString *ID = @"Cell";
 58     
 59     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
 60     
 61     if (cell == nil) {
 62         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
 63     }
 64     
 65     // 设置表格
 66     cell.textLabel.text = self.dataList[indexPath.row];
 67     
 68     return cell;
 69 }
 70 
 71 // 只要实现了此方法,就能够支持手势拖拽删除了,删除需要自己干!
 72 /**
 73  UITableViewCellEditingStyleNone,
 74  UITableViewCellEditingStyleDelete,     删除
 75  UITableViewCellEditingStyleInsert      添加
 76  */
 77 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 78 {
 79     if (editingStyle == UITableViewCellEditingStyleDelete) {
 80         NSLog(@"要删除");
 81         
 82         // MVC => 数据是保存在模型中
 83         // 1. 删除self.dataList中indexPath对应的数据
 84         [self.dataList removeObjectAtIndex:indexPath.row];
 85         NSLog(@"%@", self.dataList);
 86         
 87         // 2. 刷新表格(重新加载数据)
 88         // 重新加载所有数据
 89 //        [self.tableView reloadData];
 90         // deleteRowsAtIndexPaths让表格控件动画删除指定的行
 91         [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
 92     } else if (editingStyle == UITableViewCellEditingStyleInsert) {
 93         NSLog(@"要添加数据");
 94         
 95         // 1. 向数组添加数据
 96         [self.dataList insertObject:@"王小二" atIndex:indexPath.row + 1];
 97         // 2. 刷新表格
 98 //        [self.tableView reloadData];
 99         // insertRowsAtIndexPaths让表格控件动画在指定indexPath添加指定行
100         // 新建一个indexPath
101         NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];
102  
103         [self.tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];
104     }
105 }
106 
107 // 只要实现此方法,就可以显示拖动控件
108 - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
109 {
110     // 界面数据UITableView已经完成了
111     // 调整数据即可
112 //    [self.dataList exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
113     // 1. 将源从数组中取出
114     id source = self.dataList[sourceIndexPath.row];
115     // 2. 将源从数组中删除
116     [self.dataList removeObjectAtIndex:sourceIndexPath.row];
117     NSLog(@"%@", self.dataList);
118     
119     // 3. 将源插入到数组中的目标位置
120     [self.dataList insertObject:source atIndex:destinationIndexPath.row];
121     
122     NSLog(@"%@", self.dataList);
123 }
124 
125 #pragma mark - 代理方法
126 // 返回编辑样式,如果没有实现此方法,默认都是删除
127 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
128 {
129 //    if (indexPath.row % 2) {
130 //        return UITableViewCellEditingStyleInsert;
131 //    } else {
132 //        return UITableViewCellEditingStyleDelete;
133 //    }
134     return UITableViewCellEditingStyleInsert;
135 }
136 
137 @end

 

posted @ 2015-04-09 14:58  liqiantu  阅读(364)  评论(0编辑  收藏  举报