我正在尝试根据用户在我的应用程序中的位置来定义支持的方向,我很难做到这一点。
到目前为止,我发现我应该使用现在在 iOS6 中支持的 supportedInterfaceOrientationsForWindow: 和 shouldAutorotate 方法,但是在我的 UIViewController 中定义它们的地方从来没有调用过这两种方法。
这就是我的代码的样子
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientationsForWindow {
return UIInterfaceOrientationMaskPortrait;
}
在我的 Target Summary Supported Orientatoin 中,我取消了所有选项。我想我只会在每个 m ViewControllers 中定义支持的方向...我想知道这是否是正确的做法?
现在我已经阅读了我想要做的事情取决于我的应用程序的结构,所以在这里我将概述我的应用程序。
- 主 UIViewController(3 个按钮将您带到(3 个不同的 navigationControllerViews)错误!只有一个 navigationController...抱歉,我已经很久没有查看此代码了。)
- 辅助 UIViewController(保存导航控制器)
- 其他 UIViewControllers(出现在辅助 NavigationController 中)
我希望每个 ViewController 直到 NavigationController 堆栈中的最后一个出现在 portrate 中。NavigationController 中的最后一个视图是一个特殊的视图,如果需要,它需要能够向左或向右旋转它的方向。
我想知道这是否可能,如果可能,为什么我上面的代码不能工作/被调用。
任何帮助将不胜感激。
// 更新问题 Re:
rootview加载(三个按钮,这是选择按钮以加载包含导航控制器的视图的方法)
- (IBAction)buttonClick: (UIButton *) sender
{
//..
// v ----->
if ([sender isEqual:vUIButton]) {
VSearchViewController *vSearchViewController = [[VSearchViewController alloc] initWithNibName:@"VSearchViewController" bundle:nil];
[self.navigationController pushViewController:vehicalSearchViewController animated:YES];
}
//..
}
然后在 VSearchViewController 中,我将新视图加载到 UINavigation 堆栈中,如下所示
//..
FModelsViewController *fModelsViewController = [[FModelsViewController alloc] initWithNibName:@"FModelsViewController" bundle:nil];
// Sets the back button for the new view that loads (this overrides the usual parentview name with "Back")
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationController pushViewController:fModelsViewController animated:YES];
//..
因此,在审查中,我已经在 appDelegate 中设置了导航控制器,并且我的应用程序中的所有视图都在 navigationStack 上......我说有 3 个 NavigationControllers 是错误的......只有一个并且每个视图都添加到堆栈中。 . 对此感到抱歉.. 自从我查看此代码以来已经一年半了..