美文网首页UITableVIewObjective-C iOS dev
iOS 开发技巧 - 局部刷新UITableView

iOS 开发技巧 - 局部刷新UITableView

作者: devZhang | 来源:发表于2016-05-13 11:21 被阅读4148次

    --UITableView想必大家对它都不感觉陌生,估计你的很多APP的页面都有用到它。网络上关于UITableView的文章也不胜其数了,很多也是建议大家多看看的,比如UITableView优化类的。

    -- 今天我们聊的是关于UITableView刷新的问题。当然,你第一感觉想到的刷新肯定是用 reloadData 这个方法

    刷新UITableView

    [self.tableView reloadData];

    reloadData这个方法会刷新整个UITableView,可是有时候我们只需要刷新其中一个cell,或者一个section。这个时候再去调用reloadData 这个方法,虽然用户看不出来,但是着实有些浪费资源。这个时候,我们就需要使用局部刷新方法了。

    刷新局部cell
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade]; 
    

    这样就是局部的刷新了第一个section的第一个cell, 虽然代码看起来多了一点,但确实还是毕竟节省资源的。这也算是对UITableView的一个优化。

    刷新局部section
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndex:0];
    [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
    

    很显然,这段代码就是单独刷新第一个section

    关于刷新动画

    刷新动画还有其他几个动画可以使用

    typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
        UITableViewRowAnimationFade,   //淡入淡出
        UITableViewRowAnimationRight,  //从右滑入      
        UITableViewRowAnimationLeft,   //从左滑入
        UITableViewRowAnimationTop,     //从上滑入
        UITableViewRowAnimationBottom,  //从下滑入
        UITableViewRowAnimationNone,            // available in iOS 3.0
        UITableViewRowAnimationMiddle,          // available in iOS 3.2.  attempts to keep cell centered in the space it will/did occupy
        UITableViewRowAnimationAutomatic = 100  // available in iOS 5.0.  chooses an appropriate animation style for you
    };
    

    相关文章

      网友评论

        本文标题:iOS 开发技巧 - 局部刷新UITableView

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