UITableView局部刷新

只刷新cell不刷新section,这问题还难住了一阵子

需要用到:

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

参考:http://blog.csdn.net/likendsl/article/details/17122505

//
//  ViewController.m
//  tableView
//
//  Created by apple on 15/8/6.
//  Copyright (c) 2015年 tqh. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate> {
    UITableView *tableview;
}

@property (nonatomic,strong)NSMutableArray *dataSource;

@end

@implementation ViewController

- (NSMutableArray *)dataSource {
    if (!_dataSource) {
        _dataSource = [[NSMutableArray alloc]initWithArray:@[@"231",@"321",@"213"]];
    }
    return _dataSource;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0,300, 600)];
    tableview.dataSource = self;
    tableview.delegate = self;
    [tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellID"];
    [self.view addSubview:tableview];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataSource.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
    cell.textLabel.text = @"213";
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableview beginUpdates];
    NSArray *array1 = [[NSArray alloc]initWithArray:self.dataSource];
    NSMutableArray *array = [[NSMutableArray alloc]init];
    for (int i = 0; i < array1.count; i ++) {
        NSIndexPath *indexPath_1=[NSIndexPath indexPathForRow:i inSection:0];
        [array addObject:indexPath_1];
    }
    array1 = [[NSArray alloc]init];
    [tableview beginUpdates];
    [tableview deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationLeft];
    [tableview endUpdates];
    
    //加载新数据
    self.dataSource = [[NSMutableArray alloc]initWithArray:@[@"",@"",@"",@"",@""]];
    NSArray *array2 = [[NSArray alloc]initWithArray:self.dataSource];
    NSMutableArray *array3 = [[NSMutableArray alloc]init];
    for (int i = 0; i < array2.count; i ++) {
        NSIndexPath *indexPath_1=[NSIndexPath indexPathForRow:i inSection:0];
        [array3 addObject:indexPath_1];
    }
    array2 = [[NSArray alloc]init];
    [tableview insertRowsAtIndexPaths:array3 withRowAnimation:UITableViewRowAnimationRight];
    [tableview endUpdates];
}

@end

数据从3个变成5个了还带动画效果~~~~~~~

时间: 2024-10-18 08:52:28

UITableView局部刷新的相关文章

两种局部刷新UITableView的方法的使用条件

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ //1.取消选中这一行 [tableView deselectRowAtIndexPath:indexPath animated:YES]; //2.获取当前选中的数据 Shop *shop = _shops[indexPath.row]; //3.控制当前cell是否被选中 if( [_deleteShops

UItableview section和cell的局部刷新

局部刷新//一个section刷新    NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2];    [tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];    //一个cell刷新    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:3 inSection:

IOS开发——UI进阶篇(四)全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这些在前面已经做过很多次了,代码就不一一写了 一.全局刷新 1.添加单组数据并全局刷新 - (IBAction)add { // 添加模型数据 XMGWine *wine = [[XMGWine alloc] init]; wine.money = @"20.5"; wine.name =

UITableView的刷新

UITableView的刷新1> 数据刷新的总体步骤* 修改模型数据* 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法* 全局刷新(每一行都会重新刷新)- (void)reloadData; * 局部刷新(使用前提: 刷新前后, 模型数据的个数不变)- (void)reloadRows:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; * 局部删除(使用前提: 模型数据减少的个数 == 

安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

针对手游的性能优化,腾讯WeTest平台的Cube工具提供了基本所有相关指标的检测,为手游进行最高效和准确的测试服务,不断改善玩家的体验.目前功能还在免费开放中. 点击地址:http://wetest.qq.com/cube立即体验! 作者:Hoolly,腾讯移动客户端开发工程师. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处 WeTest导读 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人.下面让我们看看腾讯开发工程

局部刷新登录页面的实现方法

局部刷新的登录就是在一个页面上有一个登录框,登录之后交给后台异步处理,处理完成之后会在前端显示出来登录的用户信息,最常见的例子就是登陆优酷的时候我们可以看到URL登录之后没有变化(事实上,优酷用的方式不是局部刷新的方式,很明显可以看到整个页面刷新了,所以优酷的实现方式就是不是局部刷新,但是一时间没有找到例子).最近打算做一个博客的网站的项目,登录这里想要提供给用户提供一个更加良好的体验,就想到了利用ajax实现局部刷新,但是又想到了第二次登录的时候会需要判断登录过之后需要直接显示用户信息而不是登

ListView实现Item局部刷新

 对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可. 但是博主在做公司项目的时候,有个下载模块,因为可能同时下载好几个数据,所以用的listview展示所有正在下载的内容.因为下载进度要实时更新,所以要不停的调用notifyDateSetChanged刷新数据.这样会不停的重新绘制整个listview的界面,性能开销非常大.而且如果每个item有图片的话,每个item的图片都需要重新加载,就算图片做

.net updatePannel 局部刷新效果实现后,但是仍是全部刷新的修改方法

最近做了一个小例子,就是晚上都有的那种小的updatepannel的局部刷新的小例子,但是发现按照那个例子虽然能够实现label2的局部刷新,但是看上去效果确实整个页面都在刷新,这让人很头疼,所以我在网上找了很多办法,最后在网上找了一个解决办法,就是修改.net中的web.config中的一句话,即将文件中的<xhtmlConformance mode="Legacy"/>删除,删除以后重新生成了一下项目,发现并有了之前的全部刷新,并且局部刷新也正常的. <xhtml

AjaxPro局部刷新(输入时自动提示功能)

效果图 1.前台页面 <td class="queryLeft">股票名称:</td> <td class="queryRight"> <asp:TextBox ID="txtShareName" CssClass="shareName" onkeyup="prompt(this)" runat="server" autocomplete=&qu