ios中tableview的移动添加删除

//
//  MJViewController.m
//  UITableView-编辑模式
//
//  Created by mj on 13-4-11.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import "MJViewController.h"

@interface MJViewController () {
    // 当前的编辑模式
    UITableViewCellEditingStyle _editingStyle;
}
@property (nonatomic, retain) NSMutableArray *data;
@end

@implementation MJViewController
#pragma mark - 生命周期方法
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.data = [NSMutableArray array];

    for (int i = 0; i<20; i++) {
        NSString *text = [NSString stringWithFormat:@"mj-%i", i];
        [self.data addObject:text];
    }

    // 设置tableView可不可以选中
    //self.tableView.allowsSelection = NO;

    // 允许tableview多选
    //self.tableView.allowsMultipleSelection = YES;

    // 编辑模式下是否可以选中
    //self.tableView.allowsSelectionDuringEditing = NO;

    // 编辑模式下是否可以多选
    //self.tableView.allowsMultipleSelectionDuringEditing = YES;

    // 获取被选中的所有行
    // [self.tableView indexPathsForSelectedRows]

    // 获取当前可见的行
    // [self.tableView indexPathsForVisibleRows];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    self.data = nil;
}

- (void)dealloc {
    [_data release];
    [super dealloc];
}

#pragma mark - 数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.data.count;
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
        cell.detailTextLabel.text = @"详细描述";
    }

    cell.textLabel.text = [self.data objectAtIndex:indexPath.row];

    return cell;
}

#pragma mark - 代理方法
#pragma mark 设置Cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 60;
}

//- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//    NSLog(@"didSelectRowAtIndexPath");
//}

#pragma mark 提交编辑操作时会调用这个方法(删除,添加)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    // 删除操作
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // 1.删除数据
        [self.data removeObjectAtIndex:indexPath.row];

        // 2.更新UITableView UI界面
        // [tableView reloadData];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    } else {
        // 添加操作

        // 1.添加数据
        int row = indexPath.row + 1;
        [self.data insertObject:@"新添加的数据" atIndex:row];

        // 2.更新UI界面
        //[tableView reloadData];
        NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
        [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

#pragma mark 决定tableview的编辑模式
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return _editingStyle;
}
#pragma mark 只有实现这个方法,编辑模式中才允许移动Cell
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
    // NSLog(@"from(%i)-to(%i)", sourceIndexPath.row, destinationIndexPath.row);
    // 更换数据的顺序
    [self.data exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
}

#pragma mark - 公共方法
#pragma mark 删除数据
- (void)deleteData {
    _editingStyle = UITableViewCellEditingStyleDelete;

    // 开始编辑模式
    // self.tableView.editing = YES;
    // [self.tableView setEditing:YES];

    BOOL isEditing = self.tableView.isEditing;
    // 开启\关闭编辑模式
    [self.tableView setEditing:!isEditing animated:YES];
}

#pragma mark 添加数据
- (void)addData {
    _editingStyle = UITableViewCellEditingStyleInsert;

    BOOL isEditing = self.tableView.isEditing;
    // 开启\关闭编辑模式
    [self.tableView setEditing:!isEditing animated:YES];
}
@end

  

时间: 2024-10-02 18:42:29

ios中tableview的移动添加删除的相关文章

IOS中TableView的用法

IOS中TableView的用法 一.UITableView 1.数据展示的条件 1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITableView的dataSource数据源对象 2> 要想当UITableView的dataSource对象,必须遵守UITableViewDataSource协议,实现相应的数据源方法 3> 当UITableView想要展示数据的时候,就会给数据源发送消息(调用数据源

iOS中tableview中headerview总保持在屏幕上方和随着屏幕滑动一起移动至消失

1 : tableview中headerview总保持在屏幕上方 :  在代理方法中创建view,并添加到headerview上 l例子: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if ([self.title isEqualToString:@"幕后"]) { NSArray *array = @[@"全部",@"

iOS-表格数据的添加 删除

// // ViewController.m // 表格的修改 // // Created by YaguangZhu on 15/8/16. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import "ViewController.h" @interface ViewController ()<UITabBarControllerDelegate> @property (nonatomic,str

iOS中TableView小技巧

摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 原始的TableView在没有数据的行也会显示一条条的线条,不太美观,用一行代码能够解决,一般放在ViewDidLoad中 self.tableView.tableFooterView = [[UIView alloc] init]; 详细原理还没弄懂.知道的麻烦不吝赐教一下~ 2.选中列表条目后取

ios 中tableview和scrollView的区别

scrollView: 1. 介绍scrollView一些属性     1>.要想使用scrollView必须做两件事 1).设置scrollView内容 2).设置contentSize (滚动范围) 2>.其他属性         1). contentOffset(滚动位置)         2). contentInset(额外增加的滚动区域)         3). bounces (设置UIScrollView是否需要弹簧效果) 4). crollEnabled (设置UIScro

iOS中Tableview右边有字母检索 点击可以直接定位显示的问题

在做项目的过程中,我遇到这样一个问题,就是本身的tableview 调用 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 方法的时候,最后几个位置点击后不能准确定位,比如说"#" 不管我如何点击"#"都无法把其对应的列表项显示出来,所以我自己在 - (NSInteger) tableView:(UITableView *)tableView sectionForSectionI

iOS中如何优雅的添加圆角和边框?

因为项目需要,整理了下圆角和边框辅助类.想起前几天标哥还在微博里问圆角在tableView里卡顿的问题,想着去炫耀下.去到标哥的博客,发现已经有一定程度解决,给出开源库并且在推广,迭代了好几个版本了.. 圆角这东西被无数性能追求者津津乐道,无数小白们高山仰止. 至于圆角的几种实现方案,设置cornerRadius.加maskLayer.直接加镂空图.内存异步裁剪等等,网络上一搜一大把,这里就不再重复了.这里有两点要提醒下,纹理裁剪才是off-screen rendering的原因,而不是设置圆角

关于iOS中TableVIew(列表)的自定义创建和自定义的Cell

最近研究了一些HTML5的基础,一些C++的基础,有些冷落了我的iOS技术,以至于最近对于iOS有种没有信心的感觉,所以今天开始回归我的iOS核心技术,眼前表现为回顾iOS技术,以博客的形式,写总结,好吧,废话不多说 纯代码形式创建:1.创建tableView 2.定义一个自定义Cell 3.设置代理 4.代理方法的我实现 tableView的创建主要有以下步骤: 1.创建tableView - (void)createTableView{ //初始化tableView并定义位置,大小.   

IOS给tableview的cell添加长按手势执行两次(UILongPressGestureRecognizer)

这里我们为tableview添加长按手势 UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]; longPressGr.minimumPressDuration = 0.5f; longPressGr.numberOfTouchesRequired = 1; [_tableV