使用分段控件在UITabBar选项卡中切换视图

时间:2011-06-02 13:17:16

标签: iphone uitabbarcontroller uitabbar uisegmentedcontrol

我正在开发一个应用程序,允许将两个媒体库加载到同一个标签中。它们具有单独的XIB文件并且是这样加载的。但是,一旦我使用分段控件切换视图,UITabBar就会消失。

这就是我切换视图的方式:

//Switch Views
- (IBAction)segmentSwitch:(id)sender
   {
   if([sender selectedSegmentIndex] == 0)
   {
      MediaViewController *vc = [[MediaViewController alloc] initWithNibName: @"MediaView" bundle:nil];
      vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
      [self presentModalViewController: vc animated: YES];
   }
   else if([sender selectedSegmentIndex] == 1)
   {
      MediaViewControllerTwo*v2 = [[MediaViewControllerTwo alloc] initWithNibName: @"MediaViewTwo" bundle:nil];
      v2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
      [self presentModalViewController: v2 animated: YES];
   }
}

2 个答案:

答案 0 :(得分:2)

您的视图消失的原因是您正在其上显示模态视图控制器:

    [self presentModalViewController: v2 animated: YES];

如您所知modal view controller takes the whole display空间。

您想用分段控件完成什么?

编辑:为了更改UITabBar中显示的当前视图,您有几个选项。一个是简单地在当前视图中添加子视图;在视图控制器中执行:

[self.view addSubview: vc.view];
[vc viewWillAppear:NO];
[vc viewDidAppear:NO];

需要调用viewWillAppearviewDidAppear,在这种情况下,框架不会为您调用它们。

我假设您使用分段控件来控制视图的子区域(即,您的视图的上半部分是分段控件,下半部分是其他内容)。在这种情况下,我只是尝试替换位于分段控件下面的子视图。技术是一样的。

阅读评论后,您可以将一个表替换为另一个表。或者更好的是,将它们都添加为子视图(全帧),并根据分段控件选择隐藏其中一个。

答案 1 :(得分:0)

使用UITabBarController时,不应以模态方式呈现它们。它们不是正确的工具。您应该切换附加到与选项卡关联的视图控制器的视图。你将如何做到这取决于你如何建立标签栏。