ios 如何在cell中去掉_ios-从UITableView删除UITableViewCell

我正在使用fmdb来管理一些显示在常规UITableView上的数据.我正在尝试使用以下代码删除一个单元格:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete) {

db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];

[db open];

[db beginTransaction];

NSString * stringtoInsert = [NSString stringWithFormat: @"DELETE FROM TTLogObject WHERE id='%@'", [idArray objectAtIndex:indexPath.row]];

BOOL success = [db executeUpdate:stringtoInsert];

if (!success)

{

NSLog(@"insert failed!!");

}

NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);

[db commit];

[db close];

[self getList];

}

}

这是我正在使用的viewDidLoad和getList函数的代码.

- (void)viewDidLoad

{

[super viewDidLoad];

self.navigationController.navigationBar.tintColor = [UIColor blackColor];

shipperCityArray = [[NSMutableArray alloc] init];

pickupDateArray = [[NSMutableArray alloc] init];

paidArray = [[NSMutableArray alloc] init];

idArray = [[NSMutableArray alloc] init];

//NSString *path = [[NSBundle mainBundle] pathForResource:@"tt" ofType:@"db"];

[self getList];

}

- (void)getList

{

db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];

[shipperCityArray removeAllObjects];

[pickupDateArray removeAllObjects];

[paidArray removeAllObjects];

[idArray removeAllObjects];

[db open];

FMResultSet *fResult= [db executeQuery:@"SELECT * FROM TTLogObject"];

while([fResult next])

{

[shipperCityArray addObject:[fResult stringForColumn:@"shipperCity"]];

[pickupDateArray addObject:[fResult stringForColumn:@"pickupDate"]];

[paidArray addObject:[NSNumber numberWithBool:[fResult boolForColumn:@"paid"]]];

[idArray addObject:[NSNumber numberWithInteger:[fResult intForColumn:@"id"]]];

NSLog(@"%@", [NSNumber numberWithInteger:[fResult intForColumn:@"id"]]);

}

[db close];

[self.tableView reloadData];

}

问题是数据刚好从数据库中删除.但是,在按Delete键后,表格视图不再显示任何单元格.当我重新启动应用程序时,正确的数据将再次加载,而删除的单元格实际上消失了.我怀疑这与numberOfRowsInSection有关.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

NSLog(@"%i", [shipperCityArray count]);

return [shipperCityArray count];

}

启动该应用程序时,它会打印适当数量的单元格,但是当按下Delete键时,它不会打印任何内容,并且似乎没有被调用.

我曾尝试使用[self.tableView beginUpdates]和[self.tableView endUpdates],但这些似乎错误地指出了删除后产生的错误项目数.我不确定该如何解决.如果我必须使用beginUpdates和endUpdates,有人可以向我解释如何正确执行此操作,以及实际发生了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值