解决方案 »

  1.   

    如果是tableview:[tableview relodData];
    其它的直接赋值不行吗,[button setTitle:xx]、imageView.image=xxx
      

  2.   

    异步回调得到数据以后,重新让uitableview 加载数据就可以了。
    [self.tableView reloadData];
      

  3.   

    1、我觉得可以分两步走:没有拿到数据时,可以先布置界面,比如一个label,先把它放到需要的位置上;在数据请求到之后,把数据放到对应控件上,比如设置好这个label的text。只是说可能需要把这些控件或对象设成成员,方便在另一个方法里操纵它们。2、有些时候,可能界面的布局也受数据的影响,比如一个label的显示与否需要看它对应的数据是否为空。这也一样,只能数据来了之后在重设一次。
      借鉴UITableView的方式,它有一个ReloadData方法,我们自己的界面也可以有一个类似的方法,在数据回来后,调用这个方法来填补数据或者修改界面。  
      

  4.   


    异步是其它的线程了    这样要直接访问主线程的东西不行把     而且除了tableview  其它的控件如何做呢?
      

  5.   


    谢谢    指导很多     但是这样用其它线程直接控制主线程的变量   是不是还要把主线程的view设置成singleton呢?
      

  6.   

    原理前面几楼将的差不多了。在你没有获取最新的数据之前,你可以先设置一个 MBProgressHUD ,等数据全部加载完之后,这样的效果,在异步回调里面加载最新的数据,再把MBProgressHUD 移除掉。
      

  7.   

    前面各楼回答的挺好的。
    大致流程就是:网络请求完成后,在block里重新刷新界面就行。