2011-11-03 91 views
0

在我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

然而,這確實(明顯)沒有。

方法被調用

在你上面的代碼

回答

2

,要添加P2到P1,然後移除P1,因此無論是從P1的上海華刪除。

如果您嘗試切換兩個,請將P2添加到P1的超級視圖,然後刪除P1。即

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

另外,不要調用viewDidLoad。這可能會使你所做的一切無效。特別是如果你是從筆尖

好運加載

+0

具有完美意義。謝謝 – JAM

+0

編輯我的答案,你應該刪除[super viewDidLoad],如果你從一個筆尖加載,這可能會使你所做的一切無效。無論如何,仍然不是很好的做法。 – timthetoolman

2

[P1 removeFromSuperview]

只是從自己的超級視圖中刪除p1。正如您剛添加p2作爲p1的子視圖,您將刪除這兩個視圖。

你可以做這樣的事情

[[p1 superview] addSubview:p2]; 

,然後如果你想刪除P1,而不是讓它在P2

[p1 removeFromSuperview]; 
+0

它的工作原理。非常感謝你澄清! – JAM

+0

太棒了!祝你的代碼好運。 – MatLecu

1

正如timthetoolman和MatLecu提,你的榜樣將同時擁有刪除觀點。然而,你說p2在解決方案中仍然不可見?

我的建議是確保框架尺寸合適,以便您可以看到p2。嘗試爲每個p1和p2設置一個背景顏色,看看你是否實際上沒有看到p2。 9/10的原因將是由於一個觀點是在沒有框架的情況下發起的。仔細檢查一下。