UITableView的编辑

  1 #import "RootViewController.h"
  2 #import "RootView.h"
  3 #define kColor arc4random() % 256 / 255.0
  4 @interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
  5 @property (nonatomic, strong) RootView *rootView;
  6 // 声明大数组, 用来存放所有学生的信息
  7 @property (nonatomic, strong) NSMutableArray *allDataArray;
  8 // 声明编辑样式的属性
  9 @property (nonatomic, assign) UITableViewCellEditingStyle style;
 10
 11 @end
 12
 13 @implementation RootViewController
 14
 15 - (void)loadView
 16 {
 17     self.rootView = [[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
 18     self.view = self.rootView;
 19
 20 }
 21
 22 - (void)viewDidLoad {
 23     [super viewDidLoad];
 24     // Do any additional setup after loading the view.
 25     // 设置代理
 26     self.rootView.tableView.dataSource = self;
 27     self.rootView.tableView.delegate = self;
 28     // 设置数据
 29     [self handleData];
 30     // 处理导航栏
 31     self.title = @"管理";
 32     self.navigationController.navigationBar.barTintColor = [UIColor orangeColor];
 33     // 添加右按钮
 34     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(rightBarButtonItemAction:)];
 35     // 添加左按钮
 36     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(leftBarButtonItemAction:)];
 37
 38 }
 39
 40 // 设置数据
 41 - (void)handleData
 42 {
 43     // 1. 初始化大数组
 44     self.allDataArray = [NSMutableArray array];
 45     // 2. 定义三个数组存放每一组学生的姓名
 46     NSMutableArray *array1 = @[@"阿福", @"曲国伟", @"小楠", @"老司机", @"波波", @"唱吧小樽"].mutableCopy;
 47     NSMutableArray *array2 = @[@"一打", @"mbBoy", @"lida", @"BoomSky", @"正能量"].mutableCopy;
 48     NSMutableArray *array3 = @[@"孙超", @"傲然", @"MBBoy", @"??神", @"雷??"].mutableCopy;
 49     // 将所有学生存放在大数组中
 50     [self.allDataArray addObject:array1];
 51     [self.allDataArray addObject:array2];
 52     [self.allDataArray addObject:array3];
 53 }
 54
 55 //设置分区个数
 56 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 57 {
 58     return self.allDataArray.count;
 59 }
 60
 61 // 设置每个分区的行数
 62 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 63 {
 64     return [self.allDataArray[section] count];
 65 }
 66
 67 // 返回cell对象
 68 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 69 {
 70
 71 //      提到UITableView,就必须的说一说NSIndexPath。UITableView声明了一个NSIndexPath的类别,主要用 来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代 表在该section中的第几行。
 72     static NSString *identifier = @"cell";
 73     // 1. 从重用池查找cell
 74     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
 75     // 2. 判断,如果没有找到创建cell对象
 76     if (!cell) {
 77         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
 78     }
 79     // 3. 设置cell数据
 80     NSArray *array = self.allDataArray[indexPath.section];
 81     cell.textLabel.text = array[indexPath.row];
 82     //cell.backgroundColor = [UIColor colorWithRed:arc4random()%256 / 255.0 green:arc4random()%256 / 255.0 blue:arc4random()%256 / 255.0 alpha:1];
 83
 84     cell.selectionStyle = UITableViewCellSelectionStyleNone;// 取消cell点击效果
 85     //cell.selectedBackgroundView
 86
 87     return cell;
 88
 89 }
 90
 91 #pragma mark UITableView 编辑-----
 92
 93 // 实现左按钮点击方法
 94 - (void)leftBarButtonItemAction:(UIBarButtonItem *)sender
 95 {
 96     //左按钮进行插入
 97     self.style = UITableViewCellEditingStyleInsert;
 98     [self.rootView.tableView setEditing:!self.rootView.tableView.editing animated:YES];
 99 }
100
101
102
103 // 实现右按钮方法
104 - (void)rightBarButtonItemAction:(UIBarButtonItem *)sender
105 {
106     // 第一步: 设置让tableView处于编辑状态
107     //self.rootView.tableView.editing = YES;
108 //    if (self.rootView.tableView.editing) {
109 //        self.rootView.tableView.editing = NO;
110 //    } else {
111 //        self.rootView.tableView.editing = YES;
112 //    }
113     // 右按钮进行删除
114     self.style = UITableViewCellEditingStyleDelete;
115     // 优化写法
116     [self.rootView.tableView setEditing:!self.rootView.tableView.editing animated:YES];
117
118
119 }
120 // 第二步: 指定哪些cell可以被编辑 (默认所有cell都可以编辑)
121 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
122 {
123     if (indexPath.section == 0) {
124         return YES;
125     }
126     return NO;
127 }
128
129 // 第三步: 设置编辑样式 (默认编辑样式为删除样式)
130 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
131 {
132     return self.style;
133
134 }
135
136 // 第四步: 完成编辑, 提交编辑状态
137 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
138 {
139
140     // 判断编辑样式
141     if (editingStyle == UITableViewCellEditingStyleDelete) {
142         // 1.删除数据
143         [self.allDataArray[indexPath.section] removeObjectAtIndex:indexPath.row];
144         // 2.更新UI
145         // 更新一行
146         [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
147         // 全部更新
148         //[tableView reloadData];
149     } else if (editingStyle == UITableViewCellEditingStyleInsert) {
150         // 1. 添加数据到数组中
151         [self.allDataArray[indexPath.section] insertObject:@"你是不是啥" atIndex:indexPath.row + 1];
152
153         // 2. 更行UI
154      //   [tableView reloadData];
155         //更新一行
156         /**
157          *   创建新一行的NSIndexPath对象
158          */
159
160         NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];
161
162         [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationBottom];
163     }
164 }
165
166 // 返回每一行的高度
167 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
168 {
169     return 80;
170 }
171
172 // 点击cell取消动画
173 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
174 {
175     [tableView deselectRowAtIndexPath:indexPath animated:YES];
176 }
时间: 2024-10-12 22:45:44

UITableView的编辑的相关文章

【UIKit】UITableView.07 编辑模式

[1]拖动好界面 [2]设置协议,数据源 [3]代码 1.声明可变数组,用来存放所有数据对象 @interface ViewController () @property(nonatomic,strong)NSMutableArray *mydata; @end 2.初始化数据[创建30个对象数据] - (void)viewDidLoad { [super viewDidLoad]; self.mydata=[NSMutableArray array]; for(int i =0;i<30;i+

UI基础:UITableView的编辑和移动

相对UITableViiew进行编辑,必须设置代理UITableViewDataSource和UITableViewDelegate.因为需要它们为UITableViiew实现几个必须的方法. UITableView的编辑和移动都遵循四步操作: 1.让tableView处于可编辑状态(UIViewController中的方法) 2.设置哪些行可以编辑(UITableViewDataSource中的方法) 3.设置编辑的样式(UITableViewDelegate中的方法) 4.提交编辑(a.修改

UITableView处于编辑状态所在页面消失的时候崩溃

当UITableView处于编辑状态,所在页面消失的时候会崩溃. 解决办法: - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:YES]; //当处于编辑状态页面消失的时候会崩溃 [self.tableView setEditing:NO]; }

UITableView的编辑模式

UITableView可以分普通模式和Editing模式两种,这里我们着重讨论Editing模式,Editing模式中又分三种操作:Insert.Delete. Reallocted.Insert和Delete针对数据源内容的修改,而Reallocated是针对数据源位置的修改.下面分别讨论. 一.Insert Or Delete 当UITableView接收到 setEditing:animated:时,它会将同样的消息转发给每一个可见行,大致会经历如下步骤,引用至官方: The table

UITableView的编辑(插入、删除、移动)

先说两个方法beginUpdates和endUpdates,几点注意事项: 一般我们把行.块的插入.删除.移动写在由这两个方法组成的函数块中.如果你不是在这两个函数组成的块中调用插入.删除.移动方法,表的属性(比如行数)可能失效. 一般也不应该在由这两个函数组成的函数块中调用reloadData,如果你这么做了,那么所有的动画都要自己进行. 这两个方法组成的块,可以嵌套. 同一个块中的插入.删除操作,先处理完删除操作才会执行插入操作,而不管在它们在块中的顺序. UITableView是否处于编辑

UITableView的编辑操作

继续上篇UITableView和UITableViewController, 打开BNRItemsViewController.m,在类扩展中添加如下属性: @property (nonatomic, strong) IBOutlet UIView *headerView; 在XIB文件中,headerView是最顶层的对象.该视图包含的对象要使用weak引用. 并在implementation部分增加如下方法: 1 - (IBAction)addNewItem:(id)sender { 2 3

iOS开发 -------- UITableView的编辑

一 核心API Class: UITableView Delegate: UITableViewDataSource, UITableViewDelegate 涉及到的API: 插入和删除 1 /** 2 * 让tableView进入或退出编辑状态(TableView方法) 3 */ 4 - (void)setEditing:(BOOL)editing animated:(BOOL)animated; 5 6 /** 7 * 指定哪些行的cell可以进行编辑(UITableViewDataSou

iOS UItableView可以编辑

// //  RootViewController.m //  TableViewEdit // //  Created by Duba on 15-5-07. //  Copyright (c) 2015年 Dubai. All rights reserved. // #import "RootViewController.h" @interface RootViewController () { NSMutableArray *_dataArray; UITableView *_t

UI第十讲.UITableView的编辑(插入删除和移动)

一.tableView编辑(插入和删除) 实例代码: 效果图:(能添加和删除) 二.tableView移动 实例代码:(能过移动位置,同时也能添加删除) //添加删除的步骤 //设置分区效果 移动过程和步骤(重要步骤) 效果图:(能够添加,删除和移动)