调用、函数-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呢?程序员: 那我将永远无法完成任务.

posted @ 2013-04-15 21:57  坚固66  阅读(350)  评论(0编辑  收藏  举报