Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不应调用自动旋转_Ios_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Ios 不应调用自动旋转

Ios 不应调用自动旋转,ios,uiviewcontroller,uinavigationcontroller,Ios,Uiviewcontroller,Uinavigationcontroller,我试图根据用户在我的应用程序中的位置来定义支持的方向,我很难做到这一点 到目前为止,我已经发现我应该使用SupportedInterfaceOrientionsForWindow:并且应该使用iOS6中现在支持的自动旋转方法,但是在我在UIViewController中定义它们的地方,从来没有调用过这两个方法 这就是我的代码的样子 - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrien

我试图根据用户在我的应用程序中的位置来定义支持的方向,我很难做到这一点

到目前为止,我已经发现我应该使用SupportedInterfaceOrientionsForWindow:并且应该使用iOS6中现在支持的自动旋转方法,但是在我在UIViewController中定义它们的地方,从来没有调用过这两个方法

这就是我的代码的样子

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientationsForWindow {
    return UIInterfaceOrientationMaskPortrait;
}
在我的目标摘要中,我已取消选择所有选项。。我想我应该在每一个视图控制器中定义支持的方向。。。我想知道这样做是否正确

现在我已经读到我要做的事情取决于我的应用程序的结构,所以这里我将概述我的应用程序

  • 主UIViewController(3个按钮将您带到(3个不同的navigationControllerViews)错误!只有一个navigationController…很抱歉,我已经很久没有查看此代码了。)
  • 辅助UIViewController(容纳导航控制器)
  • 其他UIViewController(显示在Secondary的NavigationController中)
我希望每个ViewController都启动,直到NavigationController堆栈中的最后一个出现在portrate中。NavigationController中的最后一个视图是一个特殊视图,需要能够根据需要向左或向右旋转其方向

我想知道这是否可能,如果可能,为什么我上面的代码不能工作/被调用

任何帮助都将不胜感激

//有关问题的最新情况:

RootView加载(三个按钮,这里是选择按钮加载包含导航控制器的视图时调用的方法)

然后在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个导航控制器是错的。。只有一个视图,每个视图都添加到堆栈中。。很抱歉。。我已经有一年半没有看过这个代码了

您是否在iOS6上运行上述代码?这些方法将仅在iOS6上调用

另外,也许您可以发布一些代码来更好地说明如何转换到这些ViewController,以便我们更好地理解视图层次结构


您可能需要查看UIViewController的
addChildViewController:
方法。

我认为您的上一个视图可以利用下面编写的代码。它感测设备的方向,并将为横向视图显示不同的视图控制器(我假设您正试图这样做)。这意味着您的最后一个视图将具有纵向和横向选项

@implementation LastViewController

- (void)awakeFromNib
{
isShowingLandscapeView = NO;
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
                        selector:@selector(orientationLastViewChanged:)
                        name:UIDeviceOrientationDidChangeNotification
                        object:nil];
}
- (void)orientationLastViewChanged:(NSNotification *)notification
{

UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) &&
!isShowingLandscapeView)
{
[self performSegueWithIdentifier:@"LandscapeLastView" sender:self];
isShowingLandscapeView = YES;
}
else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&
    isShowingLandscapeView)
{
[self dismissViewControllerAnimated:YES completion:nil];
isShowingLandscapeView = NO;

}

}
在指向要锁定到纵向的此视图的视图控制器上,编写以下代码:

- (BOOL)shouldAutorotate {
return NO;
}

至于您支持的界面方向,请保留它

好的,我会发布转换代码。。由于我试图表示的数据的复杂性,我的应用程序在相当多的视图中都变成了一只野兽。我会在几分钟内更新我的问题。。我会尽力提供你需要的信息。(是的,我正在部署到iOS6,它在Targets>iosApplication Target>Deployment Target中定义正确吗?)。您需要确保在iOS6模拟器上运行它。仅仅因为你的部署目标是6,并不意味着你在6上运行它。是的,我在我的ios6设备上运行。我还更新了一些代码。那么你是说最后一个视图会有不同的.xib文件?这是正确的吗?是的,但实际上我的回答假设你使用的是故事板。请注意performsguewithindifier方法。这是在故事板中完成的。对于上一个视图,在情节提要上需要两个不同的视图控制器(一个是纵向视图,一个是横向视图)。你会有一个将肖像和风景连接起来的序列,还有一个将风景和肖像连接起来的序列。对。。不幸的是,这种方法对我不起作用(我知道自私是对的!哈哈)。。我的最后一个观点是如此的内在,以至于我想,如果不重写这个观点,在我允许的时间内让它工作几乎是不可能的。。。但是非常感谢你的回答,如果这是实现我所追求的结果的唯一途径,我会进一步研究它。
- (BOOL)shouldAutorotate {
return NO;
}