UItableView中滑动删除 cell
2011-11-30 10:42
302 查看
主要是就是两个函数 一:- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 相应editingStyle事件处理 在这里主要相应UITableViewCellEditingStyleDelete: 二:(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 在这个函数中设置那个cell设置成 什么样的editingStyle删除,插入,无 UITableViewCellEditingStyleDelete UITableViewCellEditingStyleInsert UITableViewCellEditingStyleNone 需要注意的问题:在删除对应cell中的内容时,也要删除这个cell,否则运行时显示效果就像没有刷新 一样,多出一个cell。而使用[tableView reloadData];[self loadView];刷新都不管用。必须使用deleteRowsAtIndexPaths:withRowAnimation:函数删除这个cell [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [tableView reloadData];据说reloadData只是从新加载表项内容,而不会重新设置表内cection中cell的个数。 #pragma mark Table view methods - (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { //NSLog(@"accessoryTypeForRowWithIndexPath"); if( 0 == indexPath.section ){ if( indexPath.row == [m_URLArray count]){ return UITableViewCellAccessoryDetailDisclosureButton; } GFdataURL *currentURl ; currentURl = [[[GFdataURL alloc] init] autorelease]; currentURl = [m_URLArray objectAtIndex: indexPath.row]; //[currentURl release]; //int i = [indexPath row]; if([currentURl.m_strSubscribe isEqualToString:@"y"]){ return UITableViewCellAccessoryCheckmark; }else{ return UITableViewCellAccessoryNone; } }else{ return UITableViewCellAccessoryDetailDisclosureButton; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { } - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { //NSLog(@"accessoryButtonTappedForRowWithIndexPath"); //NSInteger sectionSelect = [indexPath section]; //NSInteger rowSelect = [indexPath row]; //NSLog(@"选中了%d--%d",sectionSelect,rowSelect); switch(indexPath.section){ case 0: //资讯设置 if( indexPath.row == [m_URLArray count]){ m_addNewsURL = [[addNewsURL alloc] initWithNibName:@"addNewsURL" bundle:nil]; [self.navigationController pushViewController:m_addNewsURL animated:YES]; } break; case 1: //货币设置 switch(indexPath.row){ case 0: //跳转到默认类型 设置页面 m_defaltType = [[currencySettingForDefaultTypeViewController alloc] initWithNibName:@"currencySettingForDefaultType" bundle:nil]; m_defaltType.isDefaultType = YES; [self.navigationController pushViewController:m_defaltType animated:YES]; break; case 1: //跳转到兑换类型 设置页面 m_defaltType = [[currencySettingForDefaultTypeViewController alloc] initWithNibName:@"currencySettingForDefaultType" bundle:nil]; m_defaltType.isDefaultType = NO; [self.navigationController pushViewController:m_defaltType animated:YES]; break; default : ; } break; default : ; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } //for section 0 中的滑动删除效果 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ if( (0 == indexPath.section) && (indexPath.row != [m_URLArray count]) ){ return UITableViewCellEditingStyleDelete; }else{ return UITableViewCellEditingStyleNone; } } /* // 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 { //NSLog(@"commitEditingStyle"); if (editingStyle == UITableViewCellEditingStyleDelete) { GFdataURL *currentURl ; currentURl = [[GFdataURL alloc] init]; //currentURl = [m_URLArray objectAtIndex: indexPath.row]; currentURl = [[m_URLArray objectAtIndex:indexPath.row] retain]; GFDBC *mydatabase; mydatabase =[[GFDBC alloc] init]; [mydatabase deleteURL:currentURl.m_strURL]; [currentURl release]; currentURl = nil; if(m_URLArray !=nil){ [m_URLArray release]; m_URLArray =[[NSMutableArray alloc] init]; } m_URLArray = [[mydatabase getAllURL] retain]; // [mydatabase release]; //[m_tableView deleteRowsAtIndexPaths:indexPath.row withRowAnimation:UITableViewRowAnimationFade]; //[tableView reloadData]; //[self loadView]; [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 } } |
相关文章推荐
- UITableView左右滑动cell无法显示“删除”按钮的原因分析
- UITableView实现Cell的滑动删除
- 滑动删除uitableview cell
- [IOS]UITableView实现Cell的滑动删除
- iOS UITableView 支持滑动删除 Cell
- IOS UITableViewUITableView小技巧--实现cell向左滑动删除,编辑等功能
- (iOS)UITableView只允许部分cell支持滑动删除
- UITableView小技巧--实现cell向左滑动删除,编辑等功能
- UITableView小技巧--实现cell向左滑动删除,编辑等功能
- UITableView 滑动Cell删除
- UITableView实现Cell的滑动删除
- UITableView实现Cell的滑动删除
- iOS 开发 UItableView中滑动删除 cell
- UITableView左右滑动cell无法显示“删除”按钮的原因分析
- UITableView实现Cell的滑动删除
- 让UITableView自动滑动(定位)到某一行cell section刷新 cell刷新
- iOS UITableView删除cell分割线
- iOS App中UITableView左滑出现删除按钮及其cell的重用
- UI一揽子计划 10 (UITableView 中cell 的编辑, 增加, 删除、UITableViewController 、)
- UITableView滑动删除