主要是就是两个函数
一:- (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
最新推荐文章于 2023-05-18 15:04:23 发布