IOS之表视图单元格删除、移动及插入
1.实现单元格的删除,实现效果如下
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- //设置导航栏
- self.editButtonItem.title = @"编辑";
- self.navigation.rightBarButtonItem = self.editButtonItem;
- [self initTableViewData];
- // Do any additional setup after loading the view.
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- -(void)initTableViewData{
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];
- dataArr = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return [dataArr count];
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *CellIdentifier = @"tableCell";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- NSUInteger row = [indexPath row];
- NSDictionary *rowDict = [dataArr objectAtIndex:row];
- cell.textLabel.text = [rowDict objectForKey:@"itemName"];
- NSLog(@"cell.label.text = %@",[rowDict objectForKey:@"itemName"]);
- NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];
- cell.imageView.image = [UIImage imageNamed:imagePath];
- NSLog(@"cell.image.image = %@",imagePath);
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- return cell;
- }
- //选中Cell响应事件
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
- NSUInteger row = [indexPath row];
- NSDictionary *rowDict = [dataArr objectAtIndex:row];
- NSString *userName = [rowDict objectForKey:@"itemName"];
- NSLog(@"userName=%@",userName);
- }
- //返回编辑状态的style
- - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
- editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- //UITableViewCellEditingStyleInsert
- // return UITableViewCellEditingStyleNone;
- return UITableViewCellEditingStyleDelete;
- }
- //完成编辑的触发事件
- - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
- forRowAtIndexPath:(NSIndexPath *)indexPath
- {
- if (editingStyle == UITableViewCellEditingStyleDelete)
- {
- [dataArr removeObjectAtIndex: indexPath.row];
- // [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
- // withRowAnimation:UITableViewRowAnimationFade];
- [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
- withRowAnimation:UITableViewRowAnimationFade];
- [tableView reloadData];
- }
- }
- //UIViewController生命周期方法,用于响应视图编辑状态变化
- - (void)setEditing:(BOOL)editing animated:(BOOL)animated {
- [super setEditing:editing animated:animated];
- [self.tableView setEditing:editing animated:YES];
- if (self.editing) {
- self.editButtonItem.title = @"完成";
- } else {
- self.editButtonItem.title = @"编辑";
- }
- }
- @end
- (void)viewDidLoad
{
[super viewDidLoad];
//设置导航栏
self.editButtonItem.title = @"编辑";
self.navigation.rightBarButtonItem = self.editButtonItem;
[self initTableViewData];
// Do any additional setup after loading the view.
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} -(void)initTableViewData{
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];
dataArr = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [dataArr count];
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"tableCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; NSUInteger row = [indexPath row];
NSDictionary *rowDict = [dataArr objectAtIndex:row];
cell.textLabel.text = [rowDict objectForKey:@"itemName"];
NSLog(@"cell.label.text = %@",[rowDict objectForKey:@"itemName"]); NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];
cell.imageView.image = [UIImage imageNamed:imagePath];
NSLog(@"cell.image.image = %@",imagePath); cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell;
} //选中Cell响应事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
NSUInteger row = [indexPath row];
NSDictionary *rowDict = [dataArr objectAtIndex:row];
NSString *userName = [rowDict objectForKey:@"itemName"];
NSLog(@"userName=%@",userName);
} //返回编辑状态的style
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
//UITableViewCellEditingStyleInsert
// return UITableViewCellEditingStyleNone;
return UITableViewCellEditingStyleDelete;
}
//完成编辑的触发事件
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[dataArr removeObjectAtIndex: indexPath.row];
// [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
// withRowAnimation:UITableViewRowAnimationFade];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[tableView reloadData];
}
}
//UIViewController生命周期方法,用于响应视图编辑状态变化
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated]; [self.tableView setEditing:editing animated:YES];
if (self.editing) {
self.editButtonItem.title = @"完成";
} else {
self.editButtonItem.title = @"编辑";
}
}
@end
2.移动单元格
- //完成移动的触发事件,不添加该方法不实现移动功能
- - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath
- toIndexPath:(NSIndexPath *)destinationIndexPath
- {
- NSDictionary *item = [dataArr objectAtIndex:sourceIndexPath.row];
- [dataArr removeObjectAtIndex:sourceIndexPath.row];
- [dataArr insertObject:item atIndex:destinationIndexPath.row];
- }
//完成移动的触发事件,不添加该方法不实现移动功能
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath
toIndexPath:(NSIndexPath *)destinationIndexPath
{
NSDictionary *item = [dataArr objectAtIndex:sourceIndexPath.row];
[dataArr removeObjectAtIndex:sourceIndexPath.row];
[dataArr insertObject:item atIndex:destinationIndexPath.row];
}
3.添加单元格。下面是自定义触发事件,即单击左下角的add按钮
- - (IBAction)addistItem:(UIBarButtonItem *)sender {
- AppUtils *appUtils = [AppUtils alloc];
- //需要先初始化一个UIAlertView
- UIAlertView *alert = [UIAlertView alloc];
- [appUtils showInputDialogWithTitle:@"add" message:@"please input new user name:" toAlertView:alert confirmAction:(^{
- //得到输入框
- UITextField *textField=[alert textFieldAtIndex:0];
- // 不要写成NSMutableDictionary *newItem = [NSDictionary dictionary];
- NSMutableDictionary *newItem = [NSMutableDictionary dictionary];
- [newItem setObject:textField.text forKey:@"itemName"];
- [newItem setObject:@"1.jpeg" forKey:@"itemImagePath"];
- [dataArr addObject:newItem];
- [self.tableView reloadData];
- })];
- }
- (IBAction)addistItem:(UIBarButtonItem *)sender {
AppUtils *appUtils = [AppUtils alloc];
//需要先初始化一个UIAlertView
UIAlertView *alert = [UIAlertView alloc];
[appUtils showInputDialogWithTitle:@"add" message:@"please input new user name:" toAlertView:alert confirmAction:(^{
//得到输入框
UITextField *textField=[alert textFieldAtIndex:0];
// 不要写成NSMutableDictionary *newItem = [NSDictionary dictionary];
NSMutableDictionary *newItem = [NSMutableDictionary dictionary];
[newItem setObject:textField.text forKey:@"itemName"];
[newItem setObject:@"1.jpeg" forKey:@"itemImagePath"];
[dataArr addObject:newItem];
[self.tableView reloadData];
})];
}
4.附上·AppUtils类
- #import "AppUtils.h"
- #include "RIButtonItem.h"
- #include "UIAlertView+Blocks.h"
- @implementation AppUtils
- //弹出警告框,并实现警告框按钮的触发事件
- - (void)showInputDialogWithTitle:(NSString *)title message:(NSString *)message toAlertView:(UIAlertView*) alert confirmAction:(void(^)(void))action{
- RIButtonItem* cancelItem = [RIButtonItem item];
- cancelItem.label = @"No";
- cancelItem.action = ^
- {
- //为NO时的处理
- UITextField *tf=[alert textFieldAtIndex:0];
- NSLog(@"UITextField=%@",tf.text);
- };
- RIButtonItem* confirmItem = [RIButtonItem item];
- confirmItem.label = @"Yes";
- // confirmItem.action = action;
- alert = [alert initWithTitle:title
- message:message
- cancelButtonItem:cancelItem
- otherButtonItems:confirmItem, nil];
- alert.alertViewStyle = UIAlertViewStylePlainTextInput;
- confirmItem.action = action;
- [alert show];
- }
- @end
#import "AppUtils.h"
#include "RIButtonItem.h"
#include "UIAlertView+Blocks.h" @implementation AppUtils //弹出警告框,并实现警告框按钮的触发事件
- (void)showInputDialogWithTitle:(NSString *)title message:(NSString *)message toAlertView:(UIAlertView*) alert confirmAction:(void(^)(void))action{
RIButtonItem* cancelItem = [RIButtonItem item];
cancelItem.label = @"No";
cancelItem.action = ^
{
//为NO时的处理
UITextField *tf=[alert textFieldAtIndex:0];
NSLog(@"UITextField=%@",tf.text);
}; RIButtonItem* confirmItem = [RIButtonItem item];
confirmItem.label = @"Yes";
// confirmItem.action = action;
alert = [alert initWithTitle:title
message:message
cancelButtonItem:cancelItem
otherButtonItems:confirmItem, nil]; alert.alertViewStyle = UIAlertViewStylePlainTextInput; confirmItem.action = action;
[alert show];
}
@end
IOS之表视图单元格删除、移动及插入的更多相关文章
- iOS:集合视图UICollectionView、集合视图控制器UICollectionViewController、集合视图单元格UICollectionViewCell(创建表格的另一种控件)
两种创建表格方式的比较:表格视图.集合视图(二者十分类似) <1>相同点: 表格视图:UITableView(位于storyboard中,通过UIViewController控制器实现 ...
- iOS集合视图单元格高亮和选中的区别
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- Excel2007VBA数组和工作表及单元格的引用
动态数组使用: https://zhidao.baidu.com/question/1432222709706721499.html 使用Redim动态数组即可. 1 2 3 4 5 6 7 8 Su ...
- iOS中表视图单元格事件用nib和storyboard的两种写法总结
从ios6开始,苹果公司推出了storyborad技术取代了nib的写法,这样代码量确实少写了很多,也比较简洁.但是,从学习的角度来说,阿堂认为 用nib的写法,虽然多了些代码,但是对于掌握知识和原理 ...
- IOS开发-表视图LV3导航控制器
学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1 ...
- ABAP 动态内表添加单元格颜色字段
*动态内表alv显示时要求某些单元格显示颜色 *wa_fldcat-datatype不能添加LVC_T_SCOL类型,在创建好内表之后,再添加颜色列. DATA: wa_fldcat TYPE lvc ...
- iOS开发-表视图的使用
// // ViewController.m // Simple Table // // Created by Jierism on 16/7/20. // Copyright © 2016年 Jie ...
- easyui DataGrid表体单元格跨列rowspan
最近做项目用到了jquery easyui,其中一组DataGrid做的报表是给客户大领导看的,客户要求报表样式跟他们原有系统的一模一样(如下图1). DataGrid样式好调,只是城市名称单元格跨行 ...
- 【VBA】单元格插入图片,单元格删除图片
封装函数: Sub 插入产品形象(strRange As String, datebaseTu As String) Dim strJpg As String strJpg = datebaseTu ...
随机推荐
- 互联网+医疗(FW)
http://www.yn.xinhuanet.com/health/2015-06/05/c_134300133.htm 互联网+医疗 让合适的病人找合适的医生 www.yn.xinhuanet.c ...
- ubuntu 更新重启后 登录后 无法进入图形界面
切换到控制台然后看看-/.Xauthority的组属性是否正确,如果被改成root组了,就会造成不能登陆,你将其删除就ok了
- Java基础——clone()方法浅析
一.clone的概念 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...
- python urllib urllib2
区别 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) u ...
- MSSQL Server Transaction 数据库事务回滚的用法
使用的表结构如下: Commit TransAction Else Rollback TransAction/* 自定义一个变量来判断最后是否发生过错误.*/ ...
- 第九周java学习总结
20145306<java程序设计>第九周学习总结 教材学习内容总结 第十六章 一.JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据 ...
- Android IOS WebRTC 音视频开发总结(十九)-- kurento
折腾了一个多星期终于将kurento的环境搭建好(开发阶段的产品,有些BUG要自己解决),所以单独写篇文件来介绍. 下面开始介绍kurento,文章来自博客园RTC.Blacker,转载请说明出处. ...
- WireShark 过滤语法
1. 过滤IP,如来源IP或者目标IP等于某个IP 例子: ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107 或者 ip.addr eq 192.1 ...
- UTF-8 GBK GB2312 之间的区别和关系
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三 ...
- Rich控件二
Calendar控件 使用案例: 在Default.aspx中: <div> <h1>Calendar控件</h1> <asp:Calendar ID=&q ...