刷新TabBarController上的ViewController

时间:2011-02-18 12:13:31

标签: iphone uitabbarcontroller addsubview

我有一个tabBarController,上面有三个viewControllers。 当选择了viewController 1并且我制作了90度时,我隐藏了tabBar,我必须将当前视图添加到tabBarController,否则会出现一个空白区域,其中tabBar就是。

如果现在我将iPhone旋转到之前的方向(垂直正常位置)我删除了查看视图,但视图控制器上没有显示视图,我想应该显示原始视图(addsubview调用之前的视图) ,实际上如果我选择第二个viewController,稍后我会回到viewController 1,视图就会完美呈现。

我不明白为什么会这样,你能帮助我吗?

更新

我认为问题是我在tabbarcontroller上添加了一个视图(self.view addSubview:vista_AS.view))我需要这个来使tabbar不可见,后来当我删除这个视图时tabbarcontroller丢失了一些方式viewcontroller 0视图引用。我不明白为什么当我改为viewcontroller 1然后回到0时,视图就可以了。有没有办法重新加载viewcontroller 0视图??

更新2 : 从建议的编辑到答案中包含作者的代码

这是我的代码:

if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==        UIInterfaceOrientationLandscapeRight)
{
   self.tabBar.hidden = TRUE;
   vista_AS = [delegate.tabBarController.viewControllers   objectAtIndex:0]; 
   vista_AS.view.frame = CGRectMake(0, 0, 320, 480);
   [self.view addSubview:vista_AS.view];
 }
 else { 
      if ( (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) ) 
     {
          [vista_AS.view removeFromSuperview]; 
          self.tabBar.hidden = FALSE; 
     }

2 个答案:

答案 0 :(得分:0)

您的视图控制器1正在被释放,由于过度释放或由于内存而由系统自行解除分配。发布一些代码,显示如何附加和删除覆盖标签栏的视图。这可能就是答案。

答案 1 :(得分:0)

当您将vista_AS添加为tabBarController的子视图时,您将vista_AS的父视图更改为其最新视图父级,从而断开与tabBarController的链接。

当您更改iPhone的方向时,您会从其超级视图中删除vista_AS,但tabBarController与您的视图之间的链接仍然会中断。我相信这就是为什么你看不到这个观点。解决方案可能是将vista_AS的父级重新分配给tabBarController.view[tabBarController.view addSubview:vista_AS]