码迷,mamicode.com
首页 > 移动开发 > 详细

IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法

时间:2014-05-01 13:30:30      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   color   string   cti   rgb   line   type   com   

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];
  }
}

  

IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法,码迷,mamicode.com

IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法

标签:style   blog   class   code   color   string   cti   rgb   line   type   com   

原文地址:http://www.cnblogs.com/joesen/p/3701271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!