UITableView的增删改插

//  AppDelegate.m文件

#import "AppDelegate.h"

#import "RootTableViewController.h"

@interface AppDelegate ()

 

@end

 

@implementation AppDelegate

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   

    

    self.window.rootViewController=[[UINavigationController alloc]initWithRootViewController:[[RootTableViewController alloc]initWithStyle:UITableViewStylePlain]];

    

    return YES;

}

 

//  ViewController.h文件

#import <UIKit/UIKit.h>

 

// 1、创建协议

@protocol PostViewDelegate <NSObject>

-(void)postValue:(NSString *)userName;

@end

 

@interface ViewController : UIViewController<UITextFieldDelegate>

@property (strong,nonatomic) NSString *name;

@property (strong,nonatomic) UITextField *textName;

@property (strong,nonatomic) id <PostViewDelegate> delegatepp;

@end

 

//  ViewController.m文件

 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor=[UIColor greenColor];

    self.textName=[[UITextField alloc]initWithFrame:CGRectMake(100, 100, 200, 44)];

    self.textName.delegate=self;

    self.textName.backgroundColor=[UIColor lightGrayColor];

    

    //文本赋值

    self.textName.text=self.name;

    

    //设置边框样式

    self.textName.borderStyle=1;

    [self.view addSubview:self.textName];   

}

 

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

    

    if (self.delegatepp) {

        [self.delegatepp postValue:textField.text ];

    }

    

    //键盘控制

    if ([textField isFirstResponder]) {

        [textField resignFirstResponder];

    }

    

    //出栈,显示上一页

    [self.navigationController popViewControllerAnimated:YES];

    return YES;

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end

 

 

//  RootTableViewController.h文件

 

#import <UIKit/UIKit.h>

@interface RootTableViewController : UITableViewController

@property (strong,nonatomic) NSMutableArray *students;

@end

 

//  RootTableViewController.m文件

 

#import "RootTableViewController.h"

#import "ViewController.h"

@interface RootTableViewController ()<PostViewDelegate>

{

    //成员变量:存储每次点击的索引值

    NSIndexPath *currentIndexPath;

}

 

@end

 

@implementation RootTableViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

 

    //导航栏上的Edit  删除

     self.navigationItem.rightBarButtonItem = self.editButtonItem;

    

    //添加leftBarButtonItem   增加

    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:4 target:self action:@selector(addItem)];

    

    //数据源

    self.students=[NSMutableArray arrayWithCapacity:0];

    [self.students addObject:@"lisi"];

    [self.students addObject:@"zhangsan"];

    [self.students addObject:@"zhaoliu"];

    [self.students addObject:@"wangwu"];

    

    //指定重用单元格唯一标识

    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"myCell"];

 

}

 

//增加

-(void)addItem

{

    UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"增加学生信息" message:@"输入姓名" preferredStyle:UIAlertControllerStyleAlert];

    

    UIAlertAction *actionAdd=[UIAlertAction actionWithTitle:@"增加" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        

      UITextField *textName = alertController.textFields[0];

        

        

        [self.students addObject:textName.text];

        //NSLog(@"真正的超作对象");

        [self.tableView reloadData];

    }];

    

    [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {

        textField.placeholder=@"inpus name";

    }];

    

    [alertController addAction:actionAdd];

    

    [self presentViewController:alertController animated:YES completion:^{

        

    }];

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

#pragma mark - Table view data source

//返回分区数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

 

    return 1;

}

 

//返回显示的每个分区的行数

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

{

 

    return self.students.count;

}

 

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];

    //主标题显示的内容

    cell.textLabel.text=self.students[indexPath.row]

    ;

    return cell;

}

 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    ViewController *view=[[ViewController alloc]init];

    

    //赋值

    view.name=self.students[indexPath.row];

    //指定代理对象

    view.delegatepp=self;

    //每次点击的索引值

    currentIndexPath=indexPath;

    //下一页

    [self.navigationController pushViewController:view animated:YES];

    

}

 

//代理协议方法的实现

-(void)postValue:(NSString *)userName

{

    self.students[currentIndexPath.row]=userName;

    //刷新,重新加载

    [self.tableView reloadData];

     }

 

// Override to support conditional editing of the table view.

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

    // Return NO if you do not want the specified item to be editable.

    return YES;

}

 

//删除

// Override to support editing the table view.

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

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        // Delete the row from the data source

        [self.students removeObject:self.students[indexPath.row]];

        

        //重新加载,相当于[self.tableView reloadData],只是删除哪行,刷新哪行,  withRowAnimation:UITableViewRowAnimationFade 是加一个动画效果

        [tableView deleteRowsAtIndexPaths:@[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

    }   

}

 

// Override to support rearranging the table view.

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {

    //找到指定位置的集合元素

    NSString *name=self.students[fromIndexPath.row];

    //删除此集合元素

    [self.students removeObject:name];

    

    //插入此集合元素到指定位置

    [self.students insertObject:name atIndex:toIndexPath.row];

    NSLog(@"%@",self.students);

 }

 

// Override to support conditional rearranging of the table view.

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

    // Return NO if you do not want the item to be re-orderable.

    return YES;

}

 

 

@end

 

posted @ 2016-03-18 22:23  A唯爱永生_罗韩  阅读(189)  评论(0编辑  收藏  举报