我有另一个方向问题。但这个非常棘手。 我的RootViewController是一个普通的NavigationController。
self.window.rootViewController = _naviController;
里面有另一个ViewController,让我们称之为VC1。 VC1有一些按钮和标签。它就像文件夹的概述一样。
如果我按下一个按钮,我会带着3个ViewController(Page)到另一个ViewController和另一堆按钮(比如在里面查看图片/缩略图的文件夹里):
Archiv *archiv = [[Archiv alloc] init];
[self.navigationController pushViewController:archiv animated:YES];
[archiv release];
在loadView中:
firstPage = [[Page alloc] initViewWithFrame:CGRectMake(0, 0, 768, 960)];
[firstPage setRootViewController:self];
secondPage = [[Page alloc] initViewWithFrame:CGRectMake(0, -960, 768, 960)];
[secondPage setRootViewController:self];
thirdPage = [[Page alloc] initViewWithFrame:CGRectMake(0, 960, 768, 960)];
[thirdPage setRootViewController:self];
如果我现在再次单击一个按钮,则活动页面会推送我的第三个ViewController(带有调整大小,拖动...的图像):
Picture *pic = [[Picture alloc] initWithPicURLString:urlString];
[rootViewController.navigationController pushViewController:pic animated:YES];
[pic release];
使用NavigationController的BackButton,我总能回到上一个视图。
更多信息:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return YES;
[super init]
现在棘手的问题:
如果我从第二个VC切换到第三个VC,将其方向从纵向更改为横向,然后按BackButton,正常工作(shouldAutorotateToInterfaceOrientation
为呼叫,帧大小和起源改变......)。
但是如果我反过来做,我在横向模式,从第二个VC切换到第三个VC,将旋转到肖像来使用BackButton回到第二个VC,status-和controllerBar位于顶部,但shouldAutorotateToInterfaceOrientation
未被调用。
请帮帮我。 $ H @ RKY
答案 0 :(得分:1)
试试这个,它对我有用:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self shouldAutorotateToInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation] ];
}
答案 1 :(得分:0)
今天我有了解决问题而不知道原因的想法。
在我的第三个VC中,我刚创建了一个指向第二个视图的指针并自己调用了shouldAutorotateToInterfaceOrientation
。
但重点仍然是:为什么shouldAutorotateToInterfaceOrientation
没有在所描述的情况下打电话?
亲切的问候。 $ H @ RKY
答案 2 :(得分:0)
shouldAutorotateToInterfaceOrientation
仅在用户旋转时调用,因此当您从横向到纵向或以其他方式然后查看控制器仍然是横向时,所以这解决了问题,您必须破解代码,这意味着当您从景观中查看控制器时to portrait presentViewController示例:
ListCurrentViewController *list = [self.storyboard
instantiateViewControllerWithIdentifier:@"ListCurrentViewController"];
[self.navigationController presentViewController:list animated:NO completion:Nil];
[list dismissViewControllerAnimated:NO completion:Nil];
[self.navigationController pushViewController:list animated:YES];
ListViewController函数中的:
(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation // iOS 6 autorotation fix { return UIInterfaceOrientationPortrait; }
你必须为UINavigationController创建类别
(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [self.visibleViewController preferredInterfaceOrientationForPresentation];
}
我希望这个解决方案能帮到你。