码迷,mamicode.com
首页 > 其他好文 > 详细

关于初学者的一些小技巧--tableViewCell的数据刷新

时间:2015-10-07 20:20:42      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

就目前而言,给自定义cell赋值的时候会通过定义一个属性来储存从网络或者本地请求到的数据,具体用什么方法请求的数据,不是今天要说的重点。

今天主要分享一下对tableview上的自定义cell的数据的刷新。

应用场景,如果是用一个tableview来展示新闻概述,或者一些活动概述的时候,通常需要给cell的deselect方法管理详情页面,可以用模态也可以用push跳转下一界面,如果详情页面是可编辑的,就会牵涉到返回列表页面时的数据更新。所以在返回的时候需要做两步,一个是对对应数据库的内容进行相应操作,一个是需要对,你存放数据的容器(数组或字典,在下一般在赋值的时候会定义一个数组,来存放从数据库请求的数据),前者是对根本进行操作,以便你程序退出再登陆时,数据已经更新,后者是为了方便之后我要说的刷新数据的操作。

当然,如果是老手的话,看到上面,可能会不屑的说,原来就是这点儿小伎俩,但是,请明确本文的面向对象哦,哈哈。

回到在模态回到前一界面,或者pop回到前一界面的时候,因为数据库和数组里的内容实质已经发生改变,但是页面没有刷新,此时就需要选择恰当的时机,调用reloadData 这个方法即可。当然,此方法成功刷新页面的前提还是你对以上提到的两个容器(数组,和数据库)已经进行了操作。

刷新时机个人喜欢在传值回来的block里进行,或者在列表页面将要出现时进行。

如果是在列表页面给cell添加手势进行删除之类的操作的话,需要进行的步骤也是一样的。

以下是一段电影收藏列表删除某项内容的实例(结合本文主题)

//_dataSource 为存放从数据源解析后,拿到的数组

//sqlBasicMessage 是自定义的一个model,用来转化数据样式

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse" forIndexPath:indexPath];//cell之前已经注册

    sqlBasicMessage *sqlMessage = _dataSource[indexPath.row];

    cell.textLabel.text = sqlMessage.title;//给cell赋值,因为是列表,所以只显示标题

 

    

    

    //添加清扫手势

    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeTodelete:)];

    [cell addGestureRecognizer:swipe];

    [swipe release];

    return cell;

}

 

//侧滑删除

- (void)swipeTodelete:(UISwipeGestureRecognizer *)swipe{

    CGPoint p = [swipe locationInView:self.tableView];

    self.indexPath = [self.tableView indexPathForRowAtPoint:p]; //这里主要是为了找到对应cell的位置

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"是否移除该项" delegate:self cancelButtonTitle:@"" otherButtonTitles:@"", nil];

    [alert show];

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    if (buttonIndex == 0) {

        sqlBasicMessage *message = _dataSource[_indexPath.row];

        [[SqlDataSource defaultSqlDataSource] deleteElementFromDataBase:message]; //对数据库内容进行操作

        [_dataSource removeObject:message]; //对存放数据的数组进行操作

        [self.tableView reloadData]; //刷新数据

        NSLog(@"是删除");

    }else{

        NSLog(@"取消删除");

    }

}

 

以上即为此文全部内容,以后博客会不定时更新,喜欢iOS的大神与新手们,欢迎指点交流。

思想决定了一个人的高度,技巧决定了处理问题的效果,如果同样地问题你有不一样的方法,还望不吝赐教。

关于初学者的一些小技巧--tableViewCell的数据刷新

标签:

原文地址:http://www.cnblogs.com/SE-section/p/4859268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!