删除objective-c中的superview

时间:2011-07-26 18:20:00

标签: iphone uiview

我正在查看iPhone初学编程书中的一个示例,他们有代码在按下按钮时在两个视图之间切换。这是他们示例代码中的第一个代码段:

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];
}

这对我有意义,但我的问题是,你如何使用具有四个视图的UISegmentControl执行此操作。我知道您可以检查selectedSegment并在需要时创建该视图。但是我怎么知道最后一个视图是什么,以便将它从superview中删除,并将我的新视图添加为子视图?谢谢!

3 个答案:

答案 0 :(得分:1)

在为每个视图创建代码或IB设置标记值到segmentIndex.so时,您可以稍后通过该标记值获取它们。这很棘手且简单。

答案 1 :(得分:0)

对于任何UIView,最前面的子视图为[[myView subviews] lastObject]

答案 2 :(得分:0)

你可以查看是否分配了哪个视图为nil然后删除。

 if (yellowController) {

 [yellowController.view removeFromSuperView];
 [yellowController release];

 }

您可以浏览四个视图以确定加载哪个视图,然后删除视图。

相关问题