旋转时在当前视图上加载不同的XIB

时间:2011-08-22 16:52:14

标签: objective-c cocoa-touch ipad xib nib

我的应用程序有2个不同的视图(一个用于Portrait,另一个用于Landscape模式),我想将它们分成不同的XIB文件,这样我就可以使用更少的内存。我已经这样做了但是当我改变iPad的方向时,我的视图变得空白。 我试图做以下事情:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
self = [[MyController alloc] initWithNibName:@"MyControllerLandscape" bundle:nil];
}

但它只是初始化没有数据的视图(没有图像,没有标签,......)。如何“卸载”当前视图并使用界面方向“加载”新视图,避免弹出视图并推送新视图?

编辑:

我现在已经尝试过了,它或多或少都在工作:

[[NSBundle mainBundle] loadNibNamed:@"myPortraitView" owner:self options:nil];
[[NSBundle mainBundle] loadNibNamed:@"myLandscapeView" owner:self options:nil];

我现在的问题是:如果我在我的init方法上执行此操作,它会将两个视图加载到内存中,还是仅在引用时加载视图的引用?

1 个答案:

答案 0 :(得分:2)

以下是通过导航控制器实现此功能的一个很好的示例:

Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?