首页 > 代码库 > IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法
IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:( NSIndexPath *)indexPath { returnUITableViewCellEditingStyleDelete; } - ( void )tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:( NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [ self .items removeObjectAtIndex:indexPath.row]; [tableView reloadData]; } } - ( void )tableView:(UITableView *)tableView didSelectRowAtIndexPath:( NSIndexPath *)indexPath { NSLog (@ "Row %@ tapped." , self .items[indexPath.row]); } 在ios6环境下,上段代码运行正常。但是在ios7环境下,我做了如下操作:当tableview中的一行被删除并更新tablview后,被删除行的下一行的点击事件将被忽略,导致点击该行无反应(<span style= "color: rgb(255, 0, 0);" >双击才有反应</span>)。很奇怪是不是,下面将解释原因。 当tableview中的某行被选中删除后,tableview将处于编辑(editing)状态,所以你需要将tableview中的状态更换成选择(selection)模式,更改代码如下: - ( void )tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:( NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [ self .items removeObjectAtIndex:indexPath.row]; // Turn off editing state here tableView.editing = NO ; [tableView reloadData]; } } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。