iOS UITableView(十三) tableView经常用的代理总结和滑动删除
2016-01-13 09:55
351 查看
#pragma mark TableView Delegate //对编辑的状态下提交的事件响应 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"commond eidting style "); if (editingStyle == UITableViewCellEditingStyleDelete) { [dataArray removeObjectAtIndex:indexPath.row]; // Delete the row from the data source. [tableview deleteRowsAtIndexPaths:[NSArray arrayWithObject: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. } } //响应选中事件 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"did selectrow"); } //行将显示的时候调用 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"will display cell"); } //点击了附加图标时执行 -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { NSLog(@"accessoryButtonTappedForRowWithIndexPath"); } //开始移动row时执行 -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath { NSLog(@"moveRowAtIndexPath"); } //开发可以编辑时执行 -(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"willBeginEditingRowAtIndexPath"); } //选中之前执行 -(NSIndexPath*)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"willSelectRowAtIndexPath"); return indexPath; } //将取消选中时执行 -(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"willDeselectRowAtIndexPath"); return indexPath; } //移动row时执行 -(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath { NSLog(@"targetIndexPathForMoveFromRowAtIndexPath"); //用于限制只在当前section下面才可以移动 if(sourceIndexPath.section != proposedDestinationIndexPath.section){ return sourceIndexPath; } return proposedDestinationIndexPath; } //删除按钮的名字 -(NSString*)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { return @"删除按钮的名字"; } //让表格可以修改,滑动可以修改 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } //让行可以移动 -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } //滑动代理 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { // NSLog(@"手指滑动了"); return UITableViewCellEditingStyleDelete; } //返回组数 #pragma mark TableView DataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } //返回每组的数量 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [dataArray count]; }
<pre name="code" class="objc">
//滑动删除
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath //当在Cell上滑动时会调用此函数 { if(temp == 1 || temp == 2) return UITableViewCellEditingStyleDelete; //返回此值时,Cell会做出响应显示Delete按键,点击Delete后会调用下面的函数,别给传递UITableViewCellEditingStyleDelete参数 else return UITableViewCellEditingStyleNone; //返回此值时,Cell上不会出现Delete按键,即Cell不做任何响应 } - (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath //对选中的Cell根据editingStyle进行操作 { if (editingStyle == UITableViewCellEditingStyleDelete) { if (temp == 1) //将单元格从数据库1中删除 { [[CommonDatainstance] delEntity:[[[CommonDatainstance] gainSelectResult] objectAtIndexPath:indexPath]]; [[CommonDatainstance] saveDB]; [[CommonDatainstance] refreshResult:[[CommonDatainstance] gainSelectResult]]; NSArray *array = [[CommonDatainstance] gainSelectResult].fetchedObjects; array = [[self changeArrayForm:array] copy]; self.listData = array; [myTableView reloadData]; } else if (temp == 2) ////将单元格从数据库2中删除 { [[CommonDatainstance] delEntity:[[[CommonDatainstance] gainRecentResult] objectAtIndexPath:indexPath]]; [[CommonDatainstance] saveDB]; [[CommonDatainstance] refreshResult:[[CommonDatainstance] gainRecentResult]]; NSArray *array = [[CommonDatainstance] gainRecentResult].fetchedObjects; array = [[self changeArrayForm:array] copy]; self.listData = array; [myTableView reloadData]; } } }
相关文章推荐
- 8937 build tz file
- 循环中continue和break的区别
- 【FAQ】xcodebuild 签名,提示User interaction is not allowed?
- 于UIImage图片处理详细使用
- iOS UIFont 字体名字大全
- django migrate raise ValueError('The database backend does not accept 0 as a '
- JUI 添加或修改后不自动刷新是怎么回事?
- 键盘和输入框上移
- Data Binding Guide——google官方文档翻译(上)
- 解决build path contains duplicate entry:'src' for project 'XXX'问题
- *Implement Stack using Queues
- js中innerText,value,innerHTML的区别
- [html][easyui]DataGrid 绑定
- Penguins DbTools数据库管理移植差分工具(EXCEL相关
- UITableView的全面解析(一) 待续中...
- UILongPressGestureRecognizer的两次触发
- Easyui form combobox省市区三级联动
- UITableView深入解析 (一) 待续中...
- ios UIView详解~~~~~
- 从源码角度深入理解Handler处理机制