IOS-UITableView编辑模式示例

概要

本示例实在上篇文章的基础上的例子修改过来的,主要是简示了UITableView的编辑模式的使用,包括状态改变、移动行、删除行。

运行结果

过程概要

见代码及注释,不难

主要代码

h文件

//
//  CityViewController.h
//  NatTab
//
//  Created by God Lin on 14/12/7.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface CityViewController : UIViewController <UITabBarDelegate, UITableViewDataSource>
{
    NSMutableArray* _arrayName;
    UITableView* _tableView;
}

@property (nonatomic, retain) NSMutableArray* _arrayName;
@property (nonatomic, retain) UITableView* _tableView;
@end

m文件

//
//  CityViewController.m
//  NatTab
//
//  Created by God Lin on 14/12/7.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import "CityViewController.h"

@interface CityViewController ()

@end

@implementation CityViewController

@synthesize _arrayName;
@synthesize _tableView;

#pragma UITableViewDelegate
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}

#pragma UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self._arrayName count];
}

// 插入删除
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [self._arrayName removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert)
    {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }
}

// 移动
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
    NSString* fromObj = [self._arrayName objectAtIndex:sourceIndexPath.row];
    [self._arrayName insertObject:fromObj atIndex:destinationIndexPath.row];
    [self._arrayName removeObjectAtIndex:sourceIndexPath.row];
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

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

    cell = (UITableViewCell*)[tableView  dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  reuseIdentifier:CellIdentifier] autorelease];
    }

    NSString* iconStr = [NSString stringWithFormat:@"animal_%u.png", arc4random()%17+1];
    cell.imageView.image = [UIImage imageNamed:iconStr];
    cell.textLabel.text = [self._arrayName objectAtIndex:indexPath.row];
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    self.navigationItem.rightBarButtonItem = self.editButtonItem;

    CGRect viewRect = self.view.frame;
    self._tableView = [[UITableView alloc] initWithFrame:viewRect];
    self._tableView.delegate = (id)self;
    self._tableView.dataSource = self;
    [self.view addSubview:self._tableView];

    self._arrayName = [[NSMutableArray alloc] init];
}

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    [self._tableView setEditing:editing animated:animated];
}

- (void)viewWillAppear:(BOOL)animated
{
    int nRow = arc4random()%50+20;
    NSString* str = nil;

    [self._arrayName removeAllObjects];
    for (int i=0; i<nRow; i++)
    {
        str = [NSString stringWithFormat:@"%@_%c%c%c%c", self.title, arc4random()%26+'a',arc4random()%26+'a',arc4random()%26+'a',arc4random()%26+'a'];
        [self._arrayName addObject:str];
    }

    // 刷新数据
    [self._tableView reloadData];
}

- (void)didReceiveMemoryWarning
{
    [_arrayName release];
    [_tableView release];
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

工程代码

时间: 2024-10-12 15:08:27

IOS-UITableView编辑模式示例的相关文章

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

**********UiTableView编辑模式, 拖动位置 ,滑动删除 #import "HMViewController.h" @interface HMViewController () <UITableViewDataSource, UITableViewDelegate> /** 数据列表 */ @property (nonatomic, strong) NSMutableArray *dataList; @property (nonatomic, strong

UITableView编辑模式

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

iOS - UITableView 编辑(cell的插入, 删除, 移动)

UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelegate 涉及的API:(API的官方详细注释详见本章结尾) /** TableView 进入或退出编辑状态(TableView 方法). */ - (void)setEditing:(BOOL)editing animated:(BOOL)animate /** 确定哪些行的cell可以编辑 (UIT

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"

第九章 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) {

iOS——UITableView单选模式,多选模式,单选多选混合模式

70行代码量的UITableViewCell实现单选,多选,单选多选混合选择. SingleVC——50行 MultipleVC——55行 ChaosVC——80行 cell为Xib拓展性较好,可拿去直接使用. 代码量不是越少越好,还要容易阅读,这里突出代码量的意思仅仅是建立在简单易用的原则上,有不明白可以跟帖,有大神优化的话跪求恩赐. github: https://github.com/ZyZwei/iOS_SelectStyle.git coding: https://git.coding

tableView 编辑模式

UITableView 编辑模式详解 UITableView 的相关编辑操作非常全,今天我们来做一个总结.跟编辑相关的属性和接口有如下,我们一个一个分析,我们先认真阅读一下相关头文件,我根据意思大概翻译了一下注释. 属性方法 @property (nonatomic, getter=isEditing) BOOL editing; // 默认状态是非编辑状态,如果不调用下面接口直接设置,是没有动画的 - (void)setEditing:(BOOL)editing animated:(BOOL)

iOS UIKit:TableView之编辑模式(3)

一般table view有编辑模式和正常模式,当table view进入编辑模式时,会在row的左边显示编辑和重排控件,如图 42所示的编辑模式时的控件布局:左边的editing control有表 61的两种图标. 表 61 table view编辑控件 图标 描述 Deletion控件 Insertion控件 若table view在编辑模式时,用户点击编辑控件,那么table view会发送一系列消息给data source 和delegate对象.可以通过实现这些方法来修改table v

iOS开发-私人通讯录-数据存储和编辑模式

UI界面 -(void)viewDidLoad{ [super viewDidLoad]: //addTarget:一般用于监听按钮的点击 以及进度条值的改变 //通过通知监听UITextField的改变 /* addObserver:谁来监听 selector:通知发生的时候调用什么方法 name:通知名称 object:谁发送的通知 注意:object不能写nil,因为如果是nil只要是UITextField发生改变都会调用textChange方法,而我们只在账号和密码输入框发生改变的时候才