在rootcontroller里有一个tableview(有两项A和B),点击其中一项A打开新的view(也是一个tableview,里面有数据C和D)。然后点击navigationcontroller顶部的返回,然后再点击B,显示仍然是C和D。已确认点击B后数据已经更新了(应该是E和F),但界面上显示的仍然是A的数据(C和D)。
求教应该怎么做才能显示出新数据E和F??

解决方案 »

  1.   

    你那两个新的view应该是同一个view,填充数据的时候你是否判断了现在用什么数据填充?把代码贴上来看看
      

  2.   

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        [self.tableView reloadData];
    }
      

  3.   

    viewWillAppear试过了,没有效果由于代码太多了,大概就是这样的:http://blog.csdn.net/pjk1129/article/details/6561781比如点击A后,uitableview界面显示的C和D,返回后再点击B,uitableview界面上好象是把B中的数据E和F追加到后面了,而不是把原先的C和D清除。但实际上点击B后获得的数据是不包括A中的数据的。也许应该这么问这个问题:怎么清除原先uitableview里显示的数据?用 reloadData 不起作用。
      

  4.   

    仔细看下你的tablecell的点击事件里传到下一个view中的数据是否正确吧。
      

  5.   

    如果你是用的uinavgationcontroller,一旦视图返回之后那个视图就销毁了,何谈还能把数据保存在里面再次显示出来。应该是你点击B的时候填充的数据有问题,仔细看看你点击B之后用的什么数据去填充的。  你给的网址别人的tableview都是在一个viewcontroller里面。你自己说的涉及到了uinavgationcontroller,应该是两个viewcontroller了, reloadData 纯粹是多此一举。
      

  6.   

    返回之后原先的会销毁吗?好象是没有吧。点击A后用pushViewController显示新的视图,并把视图中的滚动条拖到中间位置;然后返回,再次点击A打开的视图中的数据仍然显示在刚才返回前的状态。如果是销毁了,应该是显示最顶部的数据吧。
      

  7.   

    你确定你传参了吗?既然二推是同一个view。那你前面这个view至少要传一个参数过来。那么后面这个view里面的talbe才知道该加载哪些数据
      

  8.   

    我用笨方法解决,就是在点击A后返回,再点击B后,在加载数据前用deleteRowsAtIndexPaths把以前的行(A中的数据)全删掉就可以了。
      

  9.   

    可以用 -(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{}然后通过判断 navigationController.viewControllers.count 是否等于1 来判断当前所在位置是不是在root中不过目前只能判断这一点不懂的话 email我
    [email protected]