美文网首页
浅析 iOS tableview 的 selectRowAtIn

浅析 iOS tableview 的 selectRowAtIn

作者: Kingsleeeey | 来源:发表于2017-03-15 10:32 被阅读0次

    可能很多人都遇到过这种情况:

    tableview列表,有时加载完,需要默认选中某一行,给予选中效果;或者需要执行某行的点击事件。

    我们举例:
    eg:比如我想默认选中第一行
    可能很多人,第一个想法就是这样:

    [mytableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
    

    然而,你会发现,如果你真的这样写了,有时候往往是没有效果的,然后就一脸萌比了。。。

    其实,我们执行这句话后,并不会走到tableview的didSelectRowAtIndexPath代理事件内,所以期望的效果肯定是没有的,那这句话做了什么呢?

    答案就是:

    执行这句话后, tableview会选中cell,只不过会执行cell内的一个setSelected自带方法,如果你正好在这里面做了点击效果处理,那么恭喜你,你是不会受影响的。

    但是,如果你要做的是多选效果、或者你要的默认选中,是需要执行didSelectRowAtIndexPath内部逻辑效果时,悲剧的你会发现无效了。。。

    那么,如果我们想达到我们的目的,该怎么做呢?

    可以通过下面这样:

    //默认选中第一行,并执行点击事件
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        [mytableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
        if ([mytableview.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) {
            [mytableview.delegate tableView:mytableview didSelectRowAtIndexPath:indexPath];
        }
    

    在后面,添加一句delegate处理,就能达到你要的目的了

    另:

    //去除cell中间默认的分割线
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    
    
    补充:(cell刷新问题)
        /**
         *  单个cell的刷新
         */
        //1.当前所要刷新的cell,传入要刷新的 行数 和 组数
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        //2.将indexPath添加到数组
        NSArray <NSIndexPath *> *indexPathArray = @[indexPath];
        //3.传入数组,对当前cell进行刷新
        [tableView reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationAutomatic];
        
        /**
         *  单个Section的刷新
         */
        //1.传入要刷新的组数
        NSIndexSet *indexSet=[[NSIndexSet alloc] initWithIndex:0];
        //2.传入NSIndexSet进行刷新
        [tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
    

    相关文章

      网友评论

          本文标题:浅析 iOS tableview 的 selectRowAtIn

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