具有多个视图控制器的PopoverController中的UISegmentedControl

时间:2011-10-25 04:55:36

标签: iphone ios uinavigationcontroller uipopovercontroller uisegmentedcontrol

我想在PopoverController中嵌入一个UISegmentedControl,类似于这个SO问题中描述的内容:UISegmentedControl embedded in a UINavigationBar/Item

不同之处在于,我想在弹出窗口中显示每个视图的不同视图控制器,具体取决于分段控件上选定的索引。我不确定我会怎么做。每当我尝试在根视图控制器上推送新视图时,UISegmentedControl就会消失。我只想在两个viewcontrollers之间切换,同时保持UISegmentedControl可见。这甚至可能吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

如果您使用presentModalViewController方法在屏幕上显示新的视图控制器,它将始终覆盖整个屏幕及其下面的内容。这就是它的工作原理。

根据文档:

  

在iPhone和iPod touch设备上,modalViewController的视图是   总是呈现全屏。在iPad上,演示文稿取决于   modalPresentationStyle属性中的值。

执行此操作并仍然能够控制视图控制器的定位方式是创建自己的表示方法。

答案 1 :(得分:0)

如果它对于segmentBar上的每个段都有一个不同的viewController,你将不得不使用一个容器viewController,它将每个viewController的视图作为子视图添加到自身或将其视图设置为viewController的视图。视图。例如:

UIViewController* containerController = [[[UIViewController alloc] init] autorelease];


//Inside the viewDidLoad of the the ContainerController class, do the following:

//Initialize all three viewControllers
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];

//set up the segment and add it to the container's navBar's title view.
[segmentedControl addTarget:self action:@selector(segmentValueChanged:) forControlEvents:UIControlEventValueChanged];


- (void)segmentValueChanged:(id)sender 
{

    //if first tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test1.view];

    //if second tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test2.view];

    //if third tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test3.view];

}

您可以只设置self.view = test1.view,而不是将其添加为子视图。显然,您将使用容器视图初始化navController并将该navController放在popover中。希望这可以帮助!