关闭

tableview-数据刷新

2112人阅读 评论(0) 收藏 举报
分类:

tableview-数据刷新

字数557 阅读104 评论0 

cell的数据刷新包含以下几个方面

  • 添加数据
  • 删除数据
  • 更改数据

全局刷新方法(最常用)

[self.tableView reloadData];
// 屏幕上的所有可视的cell都会刷新一遍

局部刷新方法

  • 添加数据
NSArray *indexPaths = @[
                        [NSIndexPath indexPathForRow:0 inSection:0],
                        [NSIndexPath indexPathForRow:1 inSection:0]
                        ];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
  • 删除数据
NSArray *indexPaths = @[
                        [NSIndexPath indexPathForRow:0 inSection:0],
                        [NSIndexPath indexPathForRow:1 inSection:0]
                        ];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationMiddle];
  • 更新数据(没有添加和删除数据,仅仅是修改已经存在的数据)
NSArray *indexPaths = @[
                        [NSIndexPath indexPathForRow:0 inSection:0],
                        [NSIndexPath indexPathForRow:1 inSection:0]
                        ];
[self.tableView relaodRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationMiddle];

左滑出现删除按钮(如下图)


左滑出现按钮.png
  • 需要实现tableView的代理方法
/**
 *  只要实现了这个方法,左滑出现Delete按钮的功能就有了
 *  点击了“左滑出现的Delete按钮”会调用这个方法
 */
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 删除模型
    [self.wineArray removeObjectAtIndex:indexPath.row];

    // 刷新
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}

/**
 *  修改Delete按钮文字为“删除”
 */
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"删除";
}

左滑出现N个按钮


左滑出现更多按钮.png
  • 需要实现tableView的代理方法
/**
 *  只要实现了这个方法,左滑出现按钮的功能就有了
 (一旦左滑出现了N个按钮,tableView就进入了编辑模式, tableView.editing = YES)
 */
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

}

/**
 *  左滑cell时出现什么按钮
 */
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewRowAction *action0 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"关注" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

        // 收回左滑出现的按钮(退出编辑模式)
        tableView.editing = NO;
    }];

    UITableViewRowAction *action1 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        [self.wineArray removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }];

    return @[action1, action0];
}

进入编辑模式

// self.tabelView.editing = YES;
[self.tableView setEditing:YES animated:YES];
// 默认情况下,进入编辑模式时,左边会出现一排红色的“减号”按钮

在编辑模式中多选

// 编辑模式的时候可以多选
self.tableView.allowsMultipleSelectionDuringEditing = YES;
// 进入编辑模式
[self.tableView setEditing:YES animated:YES];

// 获得选中的所有行
self.tableView.indexPathsForSelectedRows;
0
0
查看评论

关于tableview的界面得数据的变化怎么进行刷新的问题

总的原则就是哪里的数据源发生了改变,就对哪里进行针对的刷新,而不是统一的[uitableview  reloadData ]。 今天碰到的点赞,点赞的那个cell的点赞的人数变了,我的刷新这一条cell, 所以我就找到这个cell NSIndexPath *ip = [...
  • zyjjjay
  • zyjjjay
  • 2015-12-30 21:22
  • 2264

tableView 数据源修改后,reloaddata数据没有更新

问题描述 点击一个按钮,要清空一个cell的数据,但是reload没有清空。如图 点击物业管理处,要清空公司名称,但是没有如图 解决过程: 1.查看代码并debug发现在点击按钮的时候的确已经执行了清空操作 func radioReturn(type:OutRegisterSubmit...
  • liyanjun201
  • liyanjun201
  • 2017-02-14 15:31
  • 459

UITableView刷新某一行,改变数据源的问题

对于从字典中取值给cell赋值的,可以创建一个可变字典,每次从这个可变字典中取值赋值给cell,需要改变时,将这个可变字典中的值改变,然后再刷新即可。例如: [WebConnect webPOSTConnectWithWithStrUrl:E_BindingUrl pramaters:nil suc...
  • ideaspress
  • ideaspress
  • 2015-12-21 16:23
  • 1494

iOS的 TableView 的简单用法1 - 实现数据源

新建TableViewController和关联的类就不说了。 要显示C
  • lanmanck
  • lanmanck
  • 2014-08-13 14:02
  • 8235

tableview-数据刷新

tableview-数据刷新 字数557 阅读104 评论0 喜欢9 cell的数据刷新包含以下几个方面 添加数据删除数据更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的c...
  • intheair100
  • intheair100
  • 2015-07-08 13:30
  • 2112

获取tableView刷新完成状态

最近有个需求,需要获取tableView的刷新完成状态去做一些事情,找了好多方法,最终在http://stackoverflow.com/questions/16071503/how-to-tell-when-uitableview-has-completed-reloaddata这里找到了答案 。...
  • axllll
  • axllll
  • 2015-12-04 10:31
  • 4647

Qt model和tableview的使用

QT中的model和tableview都是采用index索引   index含有两个成员变量一个是row   一个是column  对应该索引的行号、列号 model提供数据    view提供视图 ...
  • zhaocundang
  • zhaocundang
  • 2016-05-23 09:47
  • 807

数据刷新

数据刷新 添加数据 删除数据 更改数据 全局刷新方法(最常用)[self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新一遍局部刷新方法 添加数据 NSArray *indexPaths = @[ [NSInde...
  • adrianoll
  • adrianoll
  • 2015-12-16 07:20
  • 122

IOS TableView更新某一组某一行

//一个section刷新     NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:1]; //你需要更新的组数    [tableview reloadSections:indexSet withR...
  • bddzzw
  • bddzzw
  • 2016-07-19 14:28
  • 5096

iOS的tableview与请求刷新数据一块的话.

分好viewwillappear和viewdidload,还有viewdidload这些方法,注意好顺序 要不然就会造成,想要等tableview加载完在请求刷新数据,但是却先请求刷新数据,然后Tableview再加载显示出来。。。 以下是正确的写法 上...
  • a787188834
  • a787188834
  • 2017-09-04 09:33
  • 244
    个人资料
    • 访问:170999次
    • 积分:2933
    • 等级:
    • 排名:第14260名
    • 原创:99篇
    • 转载:175篇
    • 译文:0篇
    • 评论:13条
    最新评论