iOS学习笔记——表视图二(编辑)
来源:互联网 发布:树熊网络大庆 编辑:程序博客网 时间:2024/05/17 22:01
表视图的可编辑属性,即对表的每一个单元UITableViewCell进行操作的。总共有5种方法,其中4种方法在UITableViewDataSource协议里,最后一种方法在UITableViewDelegate协议中。
在.h文件中添加协议,创建对象:
@interface LinViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>//创建表视图对象@property (retain, nonatomic) UITableView *mTableView;//创建数组对象,存储表视图数据@property (retain, nonatomic) NSMutableArray *mArray;@end在.m文件里添加实现的方法:
@implementation LinViewController//重写初始化方法,原方法在AppDeledate.m文件中- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { //设置导航栏的名称 self.navigationItem.title = @"首页"; //设置导航栏的右按钮,并关联方法 UIBarButtonItem *pButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"BeginEdit" style:UIBarButtonItemStylePlain target:self action:@selector(tableEdit:)]; //把按钮添加到导航栏上 self.navigationItem.rightBarButtonItem = pButtonItem; } return self;}//导航栏上按钮对应的方法,实现名称的切换- (void)tableEdit:(id)sender{ //三目运算,根据表视图是否可编辑的状态设置按钮的标题 [sender setTitle:[self.mTableView isEditing]?@"BeginEdit":@"EndEdit"]; //设置表视图的编辑状态,在可编辑与不可编辑之间切换 [self.mTableView setEditing:![self.mTableView isEditing]];}//释放创建的对象- (void)dealloc{ [_mTableView release]; [_mArray release]; [super dealloc];}//视图的加载- (void)viewDidLoad{ [super viewDidLoad]; //初始化表视图对象self.mTableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain]; //设置委托对象,表视图的委托 self.mTableView.dataSource = self; self.mTableView.delegate = self; //把表视图添加到当前的视图中 [self.view addSubview:self.mTableView]; //初始化数组对象 self.mArray = [NSMutableArray arrayWithCapacity:5]; //给数组中元素设置为字符串类型 for (int i = 0; i < 5; i++) { NSString *pStr = [NSString stringWithFormat:@"%d",i]; [self.mArray addObject:pStr]; }}#pragma mark---UITableVeiwDataSource---表视图的协议- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ //获取表视图中需要加载表的行数 return [self.mArray count];}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //设置一个静态字符串做标签,(静态防止局部变量多次创建,提高效率,节约内存) static NSString * identifer = @"identifer"; //创建一个cell对象(利用表示图可以复用的机制) UITableViewCell * Cell = [tableView dequeueReusableCellWithIdentifier:identifer]; //如果cell为空,就创建一个新的出来 if (nil == Cell) { Cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifer]; } //获取当前表视图行数 NSInteger row = [indexPath row]; //把数组中对应元素传递给视图的文本 Cell.textLabel.text = [self.mArray objectAtIndex:row]; return Cell;}//设置表的编辑属性,5种方法//设置当前title是否可编辑属性,第一个方法- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ if ([indexPath row] == 0) { return NO; } return YES;}#pragma mark---UITableViewDelegate协议的方法,判断编辑方式,此处只是用这个方法//设置表视图的编辑方式,包括删除与插入,第二个方法- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ if ([indexPath row]%2) { return UITableViewCellEditingStyleInsert; } return UITableViewCellEditingStyleDelete;}//确定表视图的编辑方式,第三个方法- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ //判断编辑方式为删除 if (editingStyle == UITableViewCellEditingStyleDelete) { //通过行数移除数组中元素 [self.mArray removeObjectAtIndex:[indexPath row]]; //表视图开始更新 [self.mTableView beginUpdates]; //获取数组元素,在表视图中删除 [self.mTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft]; //表视图终止更新 [self.mTableView endUpdates]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { //在数组对应行数的位置添加新元素 [self.mArray insertObject:@"New Cell" atIndex:[indexPath row]]; //表视图开始更新 [self.mTableView beginUpdates]; //获取数组元素,在表视图中插入 [self.mTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom]; //表视图终止更新 [self.mTableView endUpdates]; }}//设置表视图中行数的可以动属性,第四个方法- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{ if ([indexPath row] == 2) { return NO; } return YES;}//编辑表视图的移动方式第五个方法- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{ //获取移动前的行 NSInteger fromRow = [sourceIndexPath row]; //获取要移动到的行 NSInteger toRow = [destinationIndexPath row]; //获取数组中移动前下标对应的对象 id object = [self.mArray objectAtIndex:fromRow]; //从数组中删除 [self.mArray removeObjectAtIndex:fromRow]; //在新的位置插入 [self.mArray insertObject:object atIndex:toRow];}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}@end
0 0
- iOS学习笔记——表视图二(编辑)
- iOS学习笔记——表视图一(创建)
- iOS学习笔记——表视图三(搜索)
- shell学习笔记(二)—— vi 编辑工具
- iOS学习笔记——滚动视图(scrollView)
- iOS学习笔记——滚动视图(scrollView)
- iOS学习笔记——滚动视图(scrollView)
- iOS开发学习笔记——分段视图(UISegmentedControl)
- iOS开发之高级视图—— UITableView(二)编辑选中行
- iOS学习笔记——表视图四(分组分区)
- IOS学习笔记(十二)之IOS开发之表视图(UITableView)的讲解与使用(二)
- JQuery学习笔记(二)——可编辑的表格
- IOS学习(二)父子视图
- iOS学习笔记(二)——Hello iOS
- iOS学习笔记(二)——Hello iOS
- iOS学习笔记(二)——Hello iOS
- OpenGL学习笔记(二):视图
- iOS学习笔记——视图上移与键盘弹回
- Android历史版本
- 浅谈WebView
- ibatis pojo xml配置
- 关于判断Socket断开的问题
- Effective C++
- iOS学习笔记——表视图二(编辑)
- 如何使用strace+pstack利器分析程序性能
- 求问:mypython的小例子AttributeError: 'SimpleEditor' object has no attribute 'OnMouseDown'
- 检测清扫
- CSS居中经验谈-用法实例详解
- C++ const引用详解
- 指定日期往后加一月
- 第二天
- ccpNormalize分析