IOS第七天(6:UiTableView编辑模式, 拖动位置 ,滑动删除)

**********UiTableView编辑模式, 拖动位置 ,滑动删除

#import "HMViewController.h"

@interface HMViewController () <UITableViewDataSource, UITableViewDelegate>
/** 数据列表 */
@property (nonatomic, strong) NSMutableArray *dataList;
@property (nonatomic, strong) UITableView *tableView;
@end

@implementation HMViewController

- (UITableView *)tableView
{
    if (_tableView == nil) {
        _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

        _tableView.dataSource = self;
        _tableView.delegate = self;

        [self.view addSubview:_tableView];
    }
    return _tableView;
}

- (NSMutableArray *)dataList
{
    if (_dataList == nil) {
        _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];
    }
    return _dataList;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self tableView];

    // 开始编辑,一旦editing == YES就默认开启删除模式
    self.tableView.editing = YES;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.dataList.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }

    // 设置表格
    cell.textLabel.text = self.dataList[indexPath.row];

    return cell;
}

// 只要实现了此方法,就能够支持手势拖拽删除了,删除需要自己干!
/**
 UITableViewCellEditingStyleNone,
 UITableViewCellEditingStyleDelete,     删除
 UITableViewCellEditingStyleInsert      添加
 */
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        NSLog(@"要删除");

        // MVC => 数据是保存在模型中
        // 1. 删除self.dataList中indexPath对应的数据
        [self.dataList removeObjectAtIndex:indexPath.row];
        NSLog(@"%@", self.dataList);

        // 2. 刷新表格(重新加载数据)
        // 重新加载所有数据
//        [self.tableView reloadData];
        // deleteRowsAtIndexPaths让表格控件动画删除指定的行
        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
        NSLog(@"要添加数据");

        // 1. 向数组添加数据
        [self.dataList insertObject:@"王小二" atIndex:indexPath.row + 1];
        // 2. 刷新表格
//        [self.tableView reloadData];
        // insertRowsAtIndexPaths让表格控件动画在指定indexPath添加指定行
        // 新建一个indexPath
        NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];

        [self.tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];
    }
}

// 只要实现此方法,就可以显示拖动控件
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
    // 界面数据UITableView已经完成了
    // 调整数据即可
//    [self.dataList exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
    // 1. 将源从数组中取出
    id source = self.dataList[sourceIndexPath.row];
    // 2. 将源从数组中删除
    [self.dataList removeObjectAtIndex:sourceIndexPath.row];
    NSLog(@"%@", self.dataList);

    // 3. 将源插入到数组中的目标位置
    [self.dataList insertObject:source atIndex:destinationIndexPath.row];

    NSLog(@"%@", self.dataList);
}

#pragma mark - 代理方法
// 返回编辑样式,如果没有实现此方法,默认都是删除
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
//    if (indexPath.row % 2) {
//        return UITableViewCellEditingStyleInsert;
//    } else {
//        return UITableViewCellEditingStyleDelete;
//    }
    return UITableViewCellEditingStyleInsert;
}

@end
时间: 2024-10-25 21:41:55

IOS第七天(6:UiTableView编辑模式, 拖动位置 ,滑动删除)的相关文章

ios之UITableViewController(二) tableView的编辑模式

tableView的编辑模式 表视图可以进入编辑模式,当进入编辑模式就可以进行删除.插入.移动单元等操作 效果图: 让表视图进入编辑模式,进入编辑模式的方法有两种,一种是使用导航栏的edit 按钮,另一种是设置tableView的editing属性进入编辑模式. 最后通过实现UITableViewDataSource协议的方法实现单元格的删除.插入和移动 1,在viewDidLoad方法里面指定导航栏的右按钮为edit按钮 self.navigationItem.rightBarButtonIt

第九章 UITableView编辑模式笔记

一,tableview自带编辑模式,可以添加.删除.移动item 二,可以添加section或者table的header和footer 三,使用interface Builder创建header的layout 四,UITableView显示header前,会向它的controller发送headerVIew消息 - (UIView *)headerView { // If you have not loaded the headerView yet... if (!_headerView) {

UITableView编辑模式

UITableView有两种模式,普通模式和编辑模式.在编辑模式下可以对cell进行排序.删除.插入等等. 如何进入编辑模式 调用tableView的setEditing(editing: Bool, animated: Bool)方法. 进入编辑模式以后发生了什么 向每个cell发送setEditing:animated:方法 进入编辑模式以后cell的变化 普通模式下cell的contentview的bounds就是cell的bounds. 编辑模式下,cell有三部分组成,左边的Editi

UITableView 编辑模式(增加-删除-移动---自定义左滑 title)

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.dataArray = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4",@"5",@"6"

IOS第七天(3:UiTableView 模型和数据的分组的显示)

*************UiTableView模型和数据的分组的显示 #import "HMViewController.h" #import "HMHero.h" @interface HMViewController () <UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *tableView; @property (nona

IOS第七天(1:UiTableView 的基本用法)

***表格控件 #import "HMViewController.h" @interface HMViewController () <UITableViewDataSource> @property (weak, nonatomic) IBOutlet UITableView *tableView; @end @implementation HMViewController #pragma mark - 数据源方法 // 如果没有实现,默认是1 - (NSInteger

IOS第七天(2:UiTableView 加上数据分离)

****加上数据分离 #import "HMViewController.h" #import "HMStudent.h" @interface HMViewController () <UITableViewDataSource> @property (weak, nonatomic) IBOutlet UITableView *tableView; /** 数据列表 */ @property (nonatomic, strong) NSArray *

IOS第七天(5:UiTableView 汽车品牌,复杂模型分组展示,A-Z索要列表) (2015-08-05 14:03)

复杂模型分组展示 #import "HMViewController.h" #import "HMCarGroup.h" #import "HMCar.h" @interface HMViewController () <UITableViewDataSource> @property (nonatomic, strong) NSArray *carGroups; @property (nonatomic, strong) UITab

IOS第七天(4:UiTableView 数据的显示优化重复实例和tableFooterView和tableHeaderView)

//加上头部 和底部 - (void)viewDidLoad { [super viewDidLoad]; [self tableView]; // 设置行高 self.tableView.rowHeight = 120; // 分隔线 self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; /** 32位真彩色 ARGB 2^8 * 2^8 * 2^8 * 2^8 = 2^32 = 2^2 * 2^10