2009-06-28 58 views
1

我的應用包含3個視圖。我定義的AppDelegate 3種輔助方法,每個視圖之間切換(讓每個視圖可以調用其他的),它看起來像這樣:切換視圖時未正確繪製視圖

-(IBAction)goToView1 { 
    if (view1 == nil) 
    { 
     View1 *thisView = [[View1 alloc] initWithNibName:@"View1" bundle:nil]; 
     view1 = thisView; 
    } 

    for (UIView *view in window.subviews) 
     [view removeFromSuperview]; 

    [window addSubview:view1.view]; 
} 

如果用戶想切換到另一種觀點,我綁一個按鈕,一個IBAction在視圖的控制器定義:

-(IBAction)goToOtherView:(id)sender { 
    ViewSwitcherAppDelegate *root = [[UIApplication sharedApplication] delegate]; 
    [root goToView1]; 
} 

這一切都爲切換視圖工作正常,但在圖繪時,它是顯示不正確,就像它是忽略了狀態欄:

alt text http://lh4.ggpht.com/_nbwj7pSrW10/SkcGEZ3XH0I/AAAAAAAABMs/nAkkja27e8I/s576/ViewSwitchingProblem.png

我在做什麼錯?

它在應用程序啓動時呈現正常,所以我懷疑在將子視圖添加到窗口的方式中存在問題。

在此先感謝!

+0

您是否設置了視圖的框架屬性?如果是這樣,你能告訴我們代碼嗎? – diederikh 2009-06-28 08:37:56

+0

不是我所知道的。視圖是使用默認值創建的。 下面是一個展示相同行爲的示例項目(使用SDK 3.0): http://files.getdropbox.com/u/361159/ViewSwitcher.zip – 2009-06-28 09:37:06

回答

1

由於您沒有使用視圖的控制器來顯示它,所以您必須自己調整視圖的框架。您必須將其原點設置爲{0,20},以考慮狀態欄的空間。

但是你最好使用UIViewController並將其推送到UINavigationController上。 See the docs.