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

ios 8 UITableView 编辑删除状态不点击“删除”,页面假死临时解决方案

时间:2015-01-08 11:27:11      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:ios8   uitableview   编辑状态   setediting   caneditrowatindexpat   

ios8 UITableView 中编辑删除状态(isEditing:YES)不点击“删除”按钮点击其他位置,UITableView会假死,不可滑动,点击无效而userInteractionEnabled:YES,isEditing:NO(图片三--->图片四);
而低版本(如ios5)中编辑删除状态不点击“删除” UITableView会回到编辑状态(图片三--->图片二)。

解决办法:当ios8 编辑删除状态不点击"删除"按钮点击其他位置,页面会进入此tableView:canEditRowAtIndexPath方法(低版本不会进入此方法);判断列表最后一项,tableView.isEditing == NO ;tableView 处于编辑状态 时让列表刷新(reloadData)(图片三--->图片一)

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIBarButtonItem *barBtnItemRight = [[UIBarButtonItem alloc]initWithTitle:@"删除"
                                                                       style:UIBarButtonItemStyleDone
                                                                      target:self
                                                                      action:@selector(edit:)];
    self.navigationItem.rightBarButtonItem = barBtnItemRight;
    [barBtnItemRight release];
}

-(void)edit:(id)sender{
    if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"查看"]) {
        self.navigationItem.rightBarButtonItem.title = @"删除";
        [self.dataTableView setEditing:NO animated:YES];
    }else{
        self.navigationItem.rightBarButtonItem.title = @"查看";
        [self.dataTableView setEditing:YES animated:YES];
    }
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.dataTableView reloadData];
        });
    });
}


-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

    // ios8 编辑删除状态不点击"删除"按钮会进入此方法;判断列表最后一项,tableView.isEditing == NO ;tableView 处于编辑状态 时列表 刷新(reloadData)
    if (indexPath.row+1 == self.listArray.count&&!tableView.isEditing && [self.navigationItem.rightBarButtonItem.title isEqualToString:@"查看"]) {
        [self edit:nil];
    }

    return YES;
}

还有一点IOS8中当页面处于“图片三”状态,点击返回(回到上一个页面)程序会闪退。WTF,离开页面时将TableView编辑状态设置一下可解决这问题。

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.dataTableView setEditing:NO animated:NO];
}

操作状态图:

技术分享  技术分享技术分享  技术分享

ios 8 UITableView 编辑删除状态不点击“删除”,页面假死临时解决方案

标签:ios8   uitableview   编辑状态   setediting   caneditrowatindexpat   

原文地址:http://blog.csdn.net/fengshi_sh/article/details/42519957

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