• 调用、函数UITableView内容无法刷新的解决方法by小雨


    第一次发帖

        应用UITableView的中程过,若在另一个视图中改修了与UITableView中某些UITableViewCell关相的容内后,调用popViewController返回这个UITableView时就需要从新加载改修后的数据,认默是不会从新加载UITableViewCell的数据的。

        一般情况下,我们可以通过在UITableViewController.m件文中的viewWillAppear函数中入加[self.tableView reloadData];这个函数来处理。这个函数会调用cellForRowAtIndexPath这个方法,从而从新加载了UITableViewCell的数据。

        但偶然我们会现发,即便调用了reloadData也不能刷新UITableViewCell的容内。这时候很有可能是因为你调用的popViewController序顺有错误,即太早调用popViewController这个函数了,因为当调用popViewController这个函数以后,编译器就会从self.navigationController栈中到得最顶层的ViewController(这里的UITableViewController),并且将它的view示显出来,这进程就会调用ViewWillAppear函数等这些初始示显面界的函数,如果你在popViewController以后才对UITableView中的一些属性容内行进改修的话,虽然能转变属性容内的值,但由于UITableView已示显出来了,所以新的属性值在面界中示显不出来,于是就造成了没有刷新容内的假象。

        处理方法:

        将popViewController方法放在改修属性值的面后调用,见以下代码(1)。另外,要取得UITableViewController,因为此时当前的ViewController还没被pop出来,于是要取栈顶的下一个Controller,见(2)。

        示例代码:

    NSArray *allControllers = self.navigationController.viewControllers;
        RenewTableViewController *parent = [allControllers objectAtIndex:[allControllers count]-2]; //(2)
        parent.test=@"test";
        [self.navigationController popViewControllerAnimated:YES]; //(1)

    文章结束给大家分享下程序员的一些笑话语录: 开发时间
      项目经理: 如果我再给你一个人,那可以什么时候可以完工?程序员: 3个月吧!项目经理: 那给两个呢?程序员: 1个月吧!
    项目经理: 那100呢?程序员: 1年吧!
    项目经理: 那10000呢?程序员: 那我将永远无法完成任务.

  • 相关阅读:
    spring boot + activeMq 邮件服务
    spring boot集成activeMQ
    Java做爬虫也很方便
    Go语言学习03
    MongoDB学习-->Gridfs分布式存储&DBRef关联查询
    tomcat与oracle关于8080端口的冲突
    端口号的查找处理方法
    很不错的在线Office控件:IWebOffice与SOAOffice
    SOAOffice和iWebOffice、NTKO的比较及其优势(转)
    Cannot get a connection, pool exhausted解决办法
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3023036.html
Copyright © 2020-2023  润新知