ios表格cell的编辑和删除

目标:

这次的学习是在Navigation-based Application模板中,用RootViewController class设置操作方法,使用UITableView的属性值。在导航控制器控件为程序的窗口添加上导航条,可构建多个视图连接导航按钮。这次的练习中,我在Navigation controller控件加入两个导航按钮,屏幕左上角Add按钮为表格添加新的一行,右上角Edit按钮为表格删除一行或者移动每行的顺序。当user点击edit按钮后,便会进入到编辑的视图,当user想要回到原先的视图便点击Done完成编辑。



编码:


ViewController.m文件

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>


@interface ViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>


{

    IBOutlet UITableView *rootTableView;

    IBOutlet UIButton *editButton;

    

    NSMutableArray *dataArray;

    

    UITextField *rowField;

}


@property (nonatomic,retain)NSMutableArray*dataArray;

@property (nonatomic, retain)UITextField*rowField;

@property (nonatomic, retain) IBOutletUITableView*rootTableView;

@property (nonatomic, retain) IBOutletUIButton*editButton;



@end


ViewController.h文件


#import "ViewController.h"

@interface ViewController ()


@end


@implementation ViewController

@synthesize rootTableView;

@synthesize dataArray;

@synthesize editButton;

@synthesize rowField;



- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    //定义内容文字

    dataArray= [[NSMutableArrayalloc]initWithObjects:@"Row1", @"Row2",@"Row3",@"Row4",@"Row5",nil];

    

    //建立add按钮

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc]

                                   

                                   initWithTitle:@"Add"

                                   style:UIBarButtonItemStyleBordered

                                   target:self

                                   action:@selector(AddButtonAction:)];

    

    self.navigationItem.leftBarButtonItem= addButton;

    

}


//构建操作方法,点击按钮执行

-(IBAction) EditButtonAction:(id)sender

{

    

//    [rootTableView setEditing: YES

//                     animated: YES];

    if ([sender tag] ==1) {

        [editButton setTitle:@"Done" forState:UIControlStateNormal];

        [editButton setTag:2];

        [rootTableView setEditing:YES animated:YES];

    }else if ([sendertag] ==2){

        [editButton setTitle:@"Edit" forState:UIControlStateNormal];

        [editButton setTag:1];

        [rootTableView setEditing:NO animated:YES];

    }

    

}


//添加addbutton

-(IBAction)AddButtonAction:(id)sender

{

    UIAlertView *dialog = [[UIAlertViewalloc]initWithTitle:@"添加一行"

                                                    message:@"" 

                                                    delegate:self 

                                           cancelButtonTitle:@"取消"

                                           otherButtonTitles:@"确定",nil];

    

    

    rowField= [[UITextField alloc] initWithFrame:CGRectMake(20.0,38.0,245.0, 20.0)];

    

    [rowField setBackgroundColor:[UIColor whiteColor]];

     

    [dialog addSubview:rowField];

    

    [dialog show];

    

    [dialog release];

    

    [rowField release];

    

}


-(void) alertView: (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

    if ((buttonIndex != [alertView cancelButtonIndex]) && (rowField.text !=nil)) {

        [dataArray insertObject:[rowField text] atIndex:dataArray.count];

        

        [self.rootTableViewreloadData];

        

    }

}


//表格中分组

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 2;

}



//表格中行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{    

   //表格中行数等于数组内容的个数

    if (section ==0) {

        return dataArray.count;

    }

    

    if (section ==1)

    {

        return 0;

    }

    

    else {

        return 0;

    }

}


//分组标题内容设置

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

    //创建字符变量title

    NSString *title = nil;

    

    switch (section) {

        case 0:

            title = @"表格一";

            

            break;

            

        case 1:

            title = @"表格二";

            

            break;

            

            

        default:

            break;

    }

    

    return title;

}


//显示表格每一行内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    

   //创建一个字符变量,用于取得文本数据类型

    static NSString *CellIndentifier =@"cell";

    

   //建立表格行数单元格

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];

    

    //cell为空时

    

    if (cell == nil

    {

        //cell重新获取表格内容标识符

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIndentifier] autorelease];

    }

    

    //分组section0

    if (indexPath.section ==0

    {

        cell.textLabel.text =

        [dataArray objectAtIndex:indexPath.row];

    }

    

    return cell;

}





//编辑

-(BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

{

    return YES;

}




//调整

-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

    if (editingStyle == UITableViewCellEditingStyleDelete

    {

        //删除

        [dataArray removeObjectAtIndex:indexPath.row];

        

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]

                         withRowAnimation:UITableViewRowAnimationFade];

    }

}



//上下行移动


-(void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

    [dataArray insertObject:[dataArrayobjectAtIndex:sourceIndexPath.row]

                    atIndex:destinationIndexPath.row];

    

    [dataArray removeObjectAtIndex:(NSUInteger) sourceIndexPath.row+1];

}



//让表格内容位置调整的方法

-(BOOL) tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

{

    return YES;

}


- (void)viewDidUnload

{

    [super viewDidUnload];

    // Release any retained subviews of the main view.

}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}



-(void) dealloc

{

    [rootTableView release];

    rootTableView = nil;

    [rowField release];

    [dataArray release];

    dataArray =nil;

    [editButton release];

    editButton =nil;

    [super dealloc];

}

@end


保存文件,打开ViewController.xib文件, 在view中添加一个Table view控件,

将delegate和dataSource连接到File's Owner图标。

接着添加两个Button控件,将add和edit连接到File's owner图标上,保存文件运行:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值