在 TabBarController 上刷新 ViewController

Posted

技术标签:

【中文标题】在 TabBarController 上刷新 ViewController【英文标题】:Refresh ViewController on TabBarController 【发布时间】:2011-02-18 12:13:30 【问题描述】:

我有一个 tabBarController,上面有三个 viewController。 当 viewController 1 被选中并且我做了一个 90 度时,我隐藏了 tabBar,我必须将当前视图添加到 tabBarController,否则 tabBar 所在的位置会出现一个空白区域。

如果现在我将 iPhone 旋转到之前的方向(垂直正常位置)我 removeFromSuperview 视图,但视图控制器上没有显示视图,我想应该显示原始视图(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; 
     

【问题讨论】:

【参考方案1】:

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

【讨论】:

删除 vista_AS 时,实际上是删除了原始视图,因为它和 vista_AS 是相同的。如果要在隐藏标签栏空间后覆盖它,请添加 UIToolbar 或 UIView,如下所示: [tabBarController.view addSubview:myToolbar]; 这是我的主要问题,如何覆盖标签栏空间,但我不想添加 UIToolbar,我只想让视图填满整个屏幕。我做了 [tabBarController.view addSubview:vista] 但标签栏空间仍然出现。【参考方案2】:

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

当您更改 iPhone 的方向时,您会从其超级视图中删除 vista_AS,但 tabBarController 与您的视图之间的链接仍然断开。我相信这就是你看不到风景的原因。解决方案可能是通过将vista_AS 的父级重新分配给tabBarController.view 或执行[tabBarController.view addSubview:vista_AS]

【讨论】:

以上是关于在 TabBarController 上刷新 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C:如何正确设置 TabBarController 的 didSelectViewController 方法,这样我每次点击时都可以刷新 VC

点击tabBar时刷新tableView

LINUX如何改屏幕刷新频率

我不想在根视图控制器上添加 UInavigationController 和 tabbarcontroller

tabBar选中 刷新某页面

iPhone在标签栏应用程序模板上的TabBarController之前创建视图