我有一个带有两个视图控制器的应用程序,即vc1
和vc2
。我还有一个导航控制器。我希望vc1
处于纵向方向,vc2
处于横向方向。为此,我使用以下代码vc1
:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
并关注vc2
:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
以下是我的工作:
vc1
以纵向方向启动应用。 vc1
按钮,我会导航至vc2
。 vc2
屏幕旋转到lansdcape右方向。在此之前一切正常,然后我使用导航控制器的后退按钮返回vc1
,这会触发viewDidLoad
的{{1}}。为什么会这样?我回到vc2
如何vc1
再次加载?
注1:如果两个屏幕的方向相同(纵向或横向),则不会发生此行为。
注2:我不认为这个问题与我如何设置方向有关。因为我尝试使用vc2
,我可以说,如果supportedInterfaceOrientations
和vc1
的方向不同,那么当我从vc2
返回vc1
时,vc2
中的viewDidLoad运行。