在我的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
。
然而,(明显)没有。
方法被称为
答案 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的时间原因是由于视图是在没有框架的情况下启动的。仔细检查一下。