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) {

[email protected]"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

时间: 2024-10-11 07:07:12

UITableView的增删改插的相关文章

UITableView 的增删改 自定义UITableViewCell

1.UITableView的增删改 //设置编辑模式 [self.tableView setEditing:YES animated:YES]; //可以不写 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; 进行对UITabelView编辑时,先对数据源进行操作,后对数组进行操作 (1)删除.插入 //确定编辑的选项 //UITableV

MySQL增删改插 及表的复制及改名

MySQL增.删.改.插全表查询表记录格式1:select 字段1,...字段N from 库名.表名; 格式2:select 字段1,...字段N from 库名.表名 where 条件表达式; 注意事项:1.使用"*"可匹配所有字段.2.指定表名时,可采用 库名.表名 的形式 例: mysql>create database ku; mysql>create table ku.lisi( >name char(10) not null, >gender en

UITableView编辑 增删改查

@interface RootTableViewController () @property (nonatomic , retain) NSMutableArray *dataArray; //用数组管理表视图将要显示的数据 @end @implementation RootTableViewController //新的重用机制格式 //1.定义全局区的静态重用标识符 static NSString *identifier = @"CELL"; //重写属性的getter方法 - 

Mysql学习笔记(三)对表数据的增删改查。

写在前面:(一些牢骚,可以直接跳到分割线后) 太过敏感的人不会快乐,不幸的是我正是这种性格的人. 从培训机构毕业后,迫于经济方面的压力,和当时的班里的一个同学住在了一起,我们在一个公司上班.谁知道这都是不开心生活的源头,从每天早晨开始心情就很糟糕.他是个脾气很慢的人,我是个急脾气,特别是在早上上班的时候.由此种种吧,实在是不胜枚举.算了,还是不说了,太痛苦了,我不太喜欢说别人的坏话.我是学心理学的,已经用各种方法去安慰自己,但是都不太奏效. 回想以往和朋友的交往中,我虽然不算十分合群的人,但绝对

Mysql入门-对表数据的增删改查

这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候,我就知道,程序员的成长路程上的一个瓶颈就在于数据库.如何书写高维护性的sql语句,如何能保持高维护性的同时又保持执行的高效率,这是个难题.我最近在做一个比较棘手的项目,常常left join 5~6张表,扫表10几万,查询速度慢的惊人.10几万还仅仅是测试数据,等真正的项目上线,数据量可能会达到百万

iOS CoreData 增删改查详解

最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴.目前开发使用的Swift语言开发的项目.所以整理出来的是Swift版本,OC我就放弃了. 虽然Swift3 已经有了,目前整理的这个版本是Swift2 的.Swift 3 的话有些新特性. 需要另外调整,后续有时间再整理. 继承CoreData有两种方式: 创建项目时集成 这种方式是自动继承在AppDelegate里面,调用的使用需要通过UIApplication的方式来获取AppDelega

python开发mysql:mysql安装(windows)&amp;密码找回&amp;存储引擎简介&amp;库表的增删改查

一,mysql安装 1 下载地址 https://dev.mysql.com/downloads/file/?id=471342 2 解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计算机环境变量中 3 4 用CMD命令行执行,mysqld --initialize-insecure 初始化数据库,这样C:\mysql-5.7.19-winx64 5 这个目录下就会产生data的目录,里面包含的就是初始化的东西,配置文件,用户密码信息 6 -insecure 这个参数就是

ADO.NET笔记——使用DataAdapter执行增删改操作

相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和机械化,ADO.NET提供了一个SqlCommandBuilder对象,帮助DataAdapter对象从SELECT语句推算出需要的UPDATE,DELETE和INSERT语句:然后DataAdapter便可以利用这些语句,检查DataSet中被修改的数据,然后提交到数据库 SqlCommandBu

基于Java的XML文件模拟数据库进行增删改查操作

我们知道XML文件既可以用来进行数据的传输,也可以配合DTD约束文件用来作为配置文件,当然其本质就是一个加了标签以及众多空格保持格式的字符串,那么就可以用Java进行操作. 本例是使用MyEclipse带入DOM4j解析时要用的jar包的基础上做的:当然DOM4j相对于DOM SAX 等解析方式的方便程度是不言而喻的. 下面是本次用例XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons>