随笔
今天开发中遇到一个很奇葩的问题,就是用tableView把界面写好之后,然后准备写点击事件。却发现死活不走didSelect这个协议方法。代理那些都设置了,直接断点打在那,却一直不走。开始认为是哪个控件把cell遮挡住了,然后我把所有的控件都注释掉,却发现还是不走。于是上网查了一下,有人说是因为这个方法
- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
我试了一下,这样的确不会走didSelect方法。因为我把自定义cell改为了UItableViewCell做实验。但是我代码中根本没写这个方法,所以不会是返回nil的原因。。然后我再仔细检查了一下,最终找到原因。
原因就是我在自定义tableViewCell中加了touchBegin这个方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[_bgView removeFromSuperview];
}
把这个注释掉就可以了。。。
文/PlayCoders(简书作者)
原文链接:http://www.jianshu.com/p/eace2b0f50b1
我遇到的问题跟上面都不一样,我在仔细检查完代码后,又做了替换测试,始终认为代码没有任何问题。因为是使用xib开发,所以发现问题出在xib设置上
selection状态有以下三种,如果是第一种,DidSelect的方法是不走的
NO selection 无法选中
single Selection 单选
Muliti...Selcetion 多选
这些是tableview的属性,在代码里有设置
名字叫allowSelection开头的
这次也给了我很大的教训,有些时候问题不一定出现在代码中,因为使用了xib或者storyboard ,一些故障问题出现在这里也不足为奇了