zoukankan      html  css  js  c++  java
  • UItableView滚动到特定位置

    如果在reloadData后需要立即获取tableview的cell、高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的。

    reloadDate并不会等待tableview更新结束后才返回,而是立即返回,然后去计算表高度,获取cell等。

    如果表中的数据非常大,在一个run loop周期没执行完,这时,需要tableview视图数据的操作就会出问题了。

    apple并没有直接提供reloadData的api,想要程序延迟到reloadData结束在操作,可以用以下方法:

    方法一:

    1
    2
    3
    [self.tableView reloadData];
    [self.tableView layoutIfNeeded];
    //刷新完成

    方法二:

    1
    2
    3
    4
    [self.tableView reloadData];
    dispatch_async(dispatch_get_main_queue(), ^{
    //刷新完成
    });

    注意上面的。下面为刷新后,滚动代码(滚动到底)

     //刷新完成
            NSInteger s = [chatTableView numberOfSections];
            if (s<1) return;
            NSInteger r = [chatTableView numberOfRowsInSection:s-1];
            if (r<1) return;
            
            NSIndexPath *ip = [NSIndexPath indexPathForRow:r-1 inSection:s-1];
            
            [chatTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:animated];
    方法二: [chatTableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];

  • 相关阅读:
    python encode 理解
    java类中的static代码块作用
    stanford 词性标注中词性的解释
    Stanford3.8.0依存句法分析在java中运行
    nginx和flask安装与配置
    docker使用
    docker安装
    哈工大分词安装及使用linux
    哈工大分词器中自定义词典的使用
    zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/KingQiangzi/p/7600941.html
Copyright © 2011-2022 走看看