编辑步骤:
1.开启TableView编辑状态
2.允许哪个分区的那行 是可以编辑的(默认都能编辑)
3.指定可以编辑样式 (删除 or 添加)
4.完成编辑(提交编辑)
完成编辑步骤:
1.操作数据源数组(添加 或删除)
2.刷新UI界面
实现点击编辑按钮时触发 步骤1:开启编辑状态
- (void)barButtonItemClick:(UIBarButtonItem *)buttonTtem
{
步骤1:开启编辑状态
[self.tableView setEditing:!self.tableView.editing animated:YES];
编辑时更改标题
if (self.tableView.editing == YES) {
buttonTtem.title = @”完成”;
}else{
buttonTtem.title = @”编辑”;
}
}
步骤2 允许哪个分区的那行 是可以编辑的(默认都能编辑)
- (BOOL)tableView:(UITableView )tableView canEditRowAtIndexPath:(NSIndexPath )indexPath
{
可以利用indexPath 控制哪个分区的哪行 不能编辑
return YES;
}
步骤3指定编辑的样式
- (UITableViewCellEditingStyle)tableView:(UITableView )tableView editingStyleForRowAtIndexPath:(NSIndexPath )indexPath
{
返回编辑样式
if (indexPath.section == 0) {
分区1
if ([self.firstArray[indexPath.row]isEqualToString:@”添加”]) {
return UITableViewCellEditingStyleInsert;
}
}else{
分区2
if ([self.secondArray[indexPath.row]isEqualToString:@”添加”]) {
return UITableViewCellEditingStyleInsert;
}
}
return UITableViewCellEditingStyleDelete;
}
步骤4.提交编辑
根据编辑的样式 和索引 去完成编辑
- (void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath
{
if (indexPath.section == 0) {
分区1
if (editingStyle == UITableViewCellEditingStyleDelete) {
删除
先删除数据
[self.firstArray removeObjectAtIndex:indexPath.row];
删除的刷新方法
该方法可以进行多行删除 数组中填写所有已经删除的索引
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
//刷新页面
//整体刷新(UITableView) 重新走一遍数据源代理方法 达到刷新页面的效果
// [tableView reloadData];
}else{
添加数据
先操作数据
[self.firstArray insertObject:@”123” atIndex:indexPath.row];
添加刷新页面
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationLeft)];
}
}else{
分区2
if (editingStyle == UITableViewCellEditingStyleDelete) {
删除
先删除数据
[self.secondArray removeObjectAtIndex:indexPath.row];
删除刷新
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}else{
添加数据
先操作数据
[self.secondArray insertObject:@”123” atIndex:indexPath.row];
添加刷新
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationLeft)];
}
}
}
=============================================
移动的步骤:
1.开启编辑状态(跟上面一样,就不写了)
2.允许哪个分区的哪一行 可以移动
3.完成移动(1.操作数组源数组 2.刷新UI界面)
2.允许哪个分区的哪一行 可以移动
- (BOOL)tableView:(UITableView )tableView canMoveRowAtIndexPath:(NSIndexPath )indexPath
{
return YES;
}
3.完成移动(1.操作数组源数组 2.刷新UI界面)
- (void)tableView:(UITableView )tableView moveRowAtIndexPath:(NSIndexPath )sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
sourceIndexPath 来源的索引
destinationIndexPath 目的地的索引
移动的分类 同分区 和 跨分区移动
1.判断是否同区移动
if (sourceIndexPath.section == destinationIndexPath.section) {
来自同区
判断是哪一个区
if (sourceIndexPath.section == 0) {
操作firstArray
把来源索引下 数组对应的元素 保存一下
NSString *str = self.firstArray[sourceIndexPath.row];
用来源的索引 删除数组中对应元素
[self.firstArray removeObjectAtIndex:sourceIndexPath.row];
插入到移动的目的地索引
[self.firstArray insertObject:str atIndex:destinationIndexPath.row];
移动刷新方法
[tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
}else{
操作seconArray
把来源索引下 数组对应的元素 保存一下
NSString *str = self.secondArray[sourceIndexPath.row];
用来源的索引 删除数组中对应元素
[self.secondArray removeObjectAtIndex:sourceIndexPath.row];
插入到目的地的索引
[self.secondArray insertObject:str atIndex:destinationIndexPath.row];
[tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
}
}else{
跨区
}
步骤4.限制跨区移动(一般是限制跨区移动的)
- (NSIndexPath )tableView:(UITableView )tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath )sourceIndexPath toProposedIndexPath:(NSIndexPath )proposedDestinationIndexPath
{
sourceIndexPath 来源索引
proposedDestinationIndexPath 建议的目的地索引
if (sourceIndexPath.section == proposedDestinationIndexPath.section) {
同区移动 可以返回 目的地索引
return proposedDestinationIndexPath;
}else{
跨区移动 需要限制 (从哪里来 还回哪里去)
return sourceIndexPath;
}
}
ios开发 UIView内容动态调整大小 uitabview
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:架构复杂 运维 运维系统架构
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
在 CSS 中调整大小——WEB开发系列22
调整元素的大小是一个重要的技能,CSS 提供了多种方法来控制和调整元素的尺寸,以适应不同的设计需求和屏幕尺寸。
css 前端 web css3 html -
Hadoop动态调整日志级别
hadoop 动态调整日志
apache java hadoop -
elementUI table 表头 宽度 动态调整
elementUI table 表头宽度自适应
elementUI 宽度自适应 -
IOS UIView自动调整尺寸
自动尺寸调整行为当您改变视图的边框矩形时,其内嵌子视图的位置和尺
应用程序 uiimageview http服务器 objective-c ios开发 -
iOS uiview 创建 uitabview
UITableView概念:表格视图,生活中:表格由行、列组成,但是在iOS中,表格只由行来组成cell,本身也是容器。 作用,展示数据,可以对展示的数据进行增删改查操作。tableview的大部分操作都是在代理方法中进行的.实现编辑功能步骤:1.创建工具栏,添加编辑按钮//创建一个工具栏 UIToolbar *tb=[[
iOS uiview 创建 iOS开发 学习iOS iOS详细讲解 uitableviewcell -
openfeign grpc性能对比
一、基本概念梳理 微服务架构上,都是采用Restful风格进行通信的。1、IPC 进程间通信,Inter-Process Communication指至少两个进程或线程间传送数据或信号的一些技术或方法。每个进程都有自己的一部分独立的系统
openfeign grpc性能对比 spring spring-cloud java ci