UISplitViewController多个细节视图分段控制

时间:2011-07-28 16:21:49

标签: ios ipad uisplitviewcontroller uisegmentedcontrol

我正在使用拆分视图控制器中的iPad应用程序,应用程序将始终保持横向状态。我希望根视图控制器保持列表,并且详细视图控制器可以交换由UISegmentedControl控制的4个不同视图。

我在这里关注这篇帖子UISegmentedControl Best Practice,但是当我交换我的视图控制器时,它们没有正确地适合在detailview控制器中,它们被切断,好像他们正试图绘制ipad肖像一样取向。

如果我完全忽略了分段控制方法并且有一个详细视图,那么在详细视图中视图大小正确,但是一旦我尝试用分段控件交换它们就会遇到麻烦。

有没有办法让交换的视图正确绘制?

2 个答案:

答案 0 :(得分:1)

你试过了吗?

swappedInView.frame = detailController.view.bounds;

致电

[detailedController.view addSubview:swappedInView];

他们的内容需要适当地设置其调整大小行为(最容易在xcode / IB中)。

答案 1 :(得分:0)

我也在使用UISegmentControl,但是以编程方式添加我的视图。我首先在rootController的viewDidLoad中加载了我的默认视图(段0)。然后根据按下哪个段,检查视图是否已初始化,如果没有,则初始化,然后将其添加为子视图。然后删除其他视图。关于如何跟踪它可以帮助你,我有一个类似的帖子,并有我用于我自己的应用程序的Beginning iPhone 4开发书的代码。如果您想采用这种方法,可以使用以下代码片段:

if (self.yellowViewController.view.superview == nil)
{
    if (self.yellowViewController == nil)
    {
        YellowViewController *yellowController =
        [[YellowViewController alloc] initWithNibName:@"YellowView"
bundle:nil];
        self.yellowViewController = yellowController;
        [yellowController release];
    }
    [blueViewController.view removeFromSuperview];
    [self.view insertSubview:yellowViewController.view atIndex:0];
}
else
{
    if (self.blueViewController == nil)
    {
        BlueViewController *blueController =
        [[BlueViewController alloc] initWithNibName:@"BlueView"
bundle:nil];
        self.blueViewController = blueController;
        [blueController release];
    }
    [yellowViewController.view removeFromSuperview];
    [self.view insertSubview:blueViewController.view atIndex:0];
}

在我自己的作品中,我添加了一个子视图,而不是将其插入其他视图后面(他们的示例中前面有一个工具栏)。因此,如果说段3被按下,那么我会检查其他视图是否存在超级视图,删除该视图,添加我的视图。希望有所帮助。