美文网首页
tableView didSelectRowAtIndexPat

tableView didSelectRowAtIndexPat

作者: 彧哥哥 | 来源:发表于2020-03-05 17:45 被阅读0次
    image.png

    didSelectRowAtIndexPath 当tableview里的 selection:选择在 no selection是无法正常的,选择成single selection,就可以正常了

    一, 分析

    可能有视图遮盖在了 cell 上, 如 cell 上添加 UIButton , 会优先响应 target 事件; 又如, UIButton 上覆盖一个同级的透明色视图。

    (PS:可以搜索self.contentView addSubview注释掉所有添加在 cell 或 cell.contentView 上的所有视图, 查看结果)
    
    (PS:通过在 UITableViewCell 类里打印 hitTest:withEvent: 发现返回的是 UITableViewCellContentView 视图)
    
    (PS:设置成 YES 以后, hitTest:withEvent:返回了)
    

    二, 总结

    对于 cell 的跳转事件, 默认是有选中状态的, 若想取消选中状态, 可以设置 UITableViewCell 视图的 selectionStyle 属性为 UITableViewCellSelectionStyleNone, 而不是 UITableView 视图的 allowsSelection。
    对于事件的不响应, 可以通过 ①层次结构图 ② hittest ③注释代码 等方式检查。
    注释代码是一个快速排查问题的好方法, 可以在类的初始化处, 注释所有添加视图的方法。
    reloadRowsAtIndexPaths: withRowAnimation:效率固然低下, 可以使用 cellForRowAtIndexPath: 方法, 查找到相应 cell, 调用其方法, 按需更新数据。
    

    相关文章

      网友评论

          本文标题:tableView didSelectRowAtIndexPat

          本文链接:https://www.haomeiwen.com/subject/sogqrhtx.html