无法切换视图,需要澄清

时间:2011-11-03 03:51:43

标签: objective-c uiview

在我的UIViewController课程中,我

-(void)switchToPuzzle2:(id)sender {

     p2 = [Puzzle2 new]; // p2 is a UIView

    [p1 addSubview:p2];  //p1 is UIView currently showing
    [p1 removeFromSuperview];

    [super viewDidLoad];
}

我实际上希望将p2置于p1之上,或代替p1

然而,(明显)没有。

方法被称为

3 个答案:

答案 0 :(得分:2)

在上面的代码中,您将P2添加到P1,然后删除P1,从而从P1的superView中删除。

如果您尝试切换两个,请将P2添加到P1的超级视图,然后删除P1。即。

[p1.superView addSubview: p2];
[p1 removeFromSuperview];

另外,不要调用viewDidLoad。这可能会使你正在做的一切都无效。特别是如果你从笔尖加载

祝你好运

答案 1 :(得分:2)

[p1 removeFromSuperview];

只是从自己的超级视图中删除p1。由于您刚刚将p2添加为p1的子视图,因此删除了两个视图。

您可以执行类似

的操作
[[p1 superview] addSubview:p2];

然后如果你想删除p1而不是让它在p2下

[p1 removeFromSuperview];

答案 2 :(得分:1)

正如timthetoolman和MatLecu所提到的那样,你的例子将删除两个观点。然而,你说在给定解决方案的情况下p2仍然不可见?

我的建议是确保框架的大小正确,以便您可以看到p2。尝试为每个p1和p2设置背景颜色,看看你是否实际上没有看到p2。 9/10的时间原因是由于视图是在没有框架的情况下启动的。仔细检查一下。