UItableView 点击cell跳转到其它界面延迟bug

最近在做项目等时候遇见一个bug,点击UITableView的Cell跳转到其他界面,经常会有延时,有时四五秒,有时会有十几秒。

查看网上也没有什么详细的介绍。iOS群里问也没有问出正确的答案。最后让自己找出了答案。

我用的设备iPhone5s,iOS版本8.4。模拟器测试也有问题。

我的第一个界面中的相关代码。其他的一些没什么关系的代码就不写了。

//返回每一行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle
            reuseIdentifier:nil];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    GASettingUtils *set = _tableSettingAry[indexPath.row];
    cell.textLabel.text = set.settingTitle;
    cell.detailTextLabel.text = set.settingDetail;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}
//点击事件。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row ==0) {
          NSLog(@"click tableview");
         //跳转到第二个界面
         [self performSegueWithIdentifier:@"showSettingHotSpot" sender: self]; 
     }
}


 
 

第二个界面,并没有什么耗时操作(网络啊。。。),也没有太多控件,只是一个分组样式的UITableVIew。

解决办法找到两个。

第一个方法。                                                                                                                                                                   

将cell.selectionStyle设置成1、2、3。

也就是不要这样:cell.selectionStyle =UITableViewCellSelectionStyleNone;

设置成这几种都可以:

cell.selectionStyle = UITableViewCellSelectionStyleBlue; // 1

cell.selectionStyle = UITableViewCellSelectionStyleGray;  //2

cell.selectionStyle = UITableViewCellSelectionStyleDefault;  //3 

这样后没有出现那个问题。

第二个方法                                                                             

不管cell的selectionStyle,在tableview的点击事件方法中,也就是 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

在这个方法中添加一句代码

[tableView deselectRowAtIndexPath:indexPath animated:YES];

这样不论cell的selectionStyle是什么。都没有在延迟。



之后又发现一个问题,就是点击cell弹出alertview的时候,也会出现延迟。

这个经多次测试只能使用第一个方法避免这种问题的出现,第二种不能解决。

你可能感兴趣的:(UITableViewCell,UITableView,延迟,selectionStyle)