2009-06-28 60 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.