2011-08-22 93 views
1

我对我的应用2种不同的视图(一个用于人像,另一个用于风景模式),我想,这样我使用较少的内存将它们分成不同的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()方法,将其加载两种观点到内存或只是一个参考加载视图时,neded?

回答

2
+0

这是一个很好的解决方案,但(请纠正我,如果我错了),是使用每个横向视图控制器的家伙另一个是肖像模式?我想要做的只是在内存中加载1个视图(将显示的视图)并移除另一个视图,以节省内存。使用这个例子我只会节省内存,以防用户不旋转设备,是吗?感谢名单! – Alex

+0

这两个控制器将坐在内存中,是的,但如果应用程序收到内存警告,非活动视图将能够卸载。我想你可以在需要的时候才创建视图控制器(也就是在将它们推入导航控制器之前)并在弹出后释放它们。这样,你只能在内存中看到一个视图和一个控制器,但当然每次设备旋转时加载视图可能会导致性能损失 - 尽管我怀疑它会引起注意,除非你有非常复杂的视图。 – SVD

相关问题