我的应用程序开始工作得很好,但我有一个小问题,我无法弄清楚如何修复。
这是一个基于视图的应用程序,我的appDelegate文件中有一个NavigationController,它根据需要推送各种ViewControllers。进入“前进方向”一切运作良好,实际上看起来很完美,但我遇到的问题是VC从堆栈中弹出。这是我用来显示VC的代码,然后只使用后退按钮返回。
UINavigationController *iaxNC = [[UINavigationController alloc] init];
LogInViewController *logInVC = [[LogInViewController alloc] init];
[iaxNC pushViewController:logInVC animated:NO];
[logInVC release];
[_window addSubview:iaxNC.view];
[_window makeKeyAndVisible];
加载我的登录视图,然后代码检查是否有任何用户在加载SetUp屏幕之前(如果没有),如下所示:
setUpVC = [[SetUpViewController alloc] init];
setUpVC.firstUse = self.firstUse;
[self.navigationController pushViewController:setUpVC animated:YES];
[setUpVC release];
当我从SetUp视图点击后退按钮返回LogIn视图时,会出现问题。
我有大多数VC的肖像和风景视图,这些VC是Michael Tyson的TPMultiLayoutViewController的子类。纵向视图连接为* portraitView和*视图,横向视图连接为* landscapeView。
问题在于:
如果在按下后退按钮之前将VC推入视图并更改设备的方向,那么当我点击“返回”时,前一个VC将以其原始格式显示(即不旋转到当前方向)也会出现视图的左下角位于屏幕的左下角。然后,它再“旋转”,直到我再次旋转设备然后一切都很好,并按预期运行。
所以问题是我正在研究TPMultiView子类的内容,但我并没有假装完全了解它(其中可能存在我的真实问题),但作为权宜之计的解决方案有一种方法可以强迫当“pushee's”VC弹出时,“推动器”VC的视图出现在它的前一个方向(虽然是短暂的 - 然后允许它在显示后旋转)?
这有意义吗?
解决了它!问题是我在LogInVC中包含了我自己的viewWillAppear
方法但是我没有调用[super viewWillAppear]
所以超类的效果从来没有真正起作用,是吗!感谢您的投入。我可以推荐子类BTW中的TPMultiView drop非常好用。
答案 0 :(得分:0)
您应首先验证shouldAutoRotateToInterfaceOrientation:
的实施是否适用于所有视图控制器。
然后确保视图控制器的视图具有适当的autoresizingMask
设置。如果您已在Interface Builder中创建了视图控制器及其视图,则应在此处设置调整大小掩码。
否则,在您的-loadView
或-viewDidLoad
方法中,您应该使用此行:
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;