Objective c 仅允许选项卡栏设置中的多个视图中的一个视图旋转

Objective c 仅允许选项卡栏设置中的多个视图中的一个视图旋转,objective-c,ios,cocoa-touch,uitabbarcontroller,uideviceorientation,Objective C,Ios,Cocoa Touch,Uitabbarcontroller,Uideviceorientation,我有一个具有四种不同视图的选项卡栏控制器。最近,我只想为我的一个观点加入轮换。我在某个地方读到,对于选项卡控制器,在方法中需要返回YES的所有子视图都应该返回AutoRotateTointerFaceOrientation:。我已经这样做了,而且一切都正常,但是,我只希望其中一个视图进入景观模式,而不是全部。我似乎只能在全有或全无的情况下使用它,这意味着它要么全旋转,要么无旋转。将此添加到仅支持纵向模式的VCs中: - (BOOL)shouldAutorotateToInterfaceOrien

我有一个具有四种不同视图的选项卡栏控制器。最近,我只想为我的一个观点加入轮换。我在某个地方读到,对于选项卡控制器,在方法
中需要返回
YES
的所有子视图都应该返回AutoRotateTointerFaceOrientation:
。我已经这样做了,而且一切都正常,但是,我只希望其中一个视图进入景观模式,而不是全部。我似乎只能在全有或全无的情况下使用它,这意味着它要么全旋转,要么无旋转。

将此添加到仅支持纵向模式的VCs中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}
将此添加到支持横向的VC中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return YES;
}

上述情况意味着您需要4个VC来控制您不想要的选项卡。 您还可以在mainVC中创建一个额外的布尔值,默认情况下为NO。 然后,当您打开支持所有方向的特定视图时,只需将该布尔值设置为“是”,然后执行以下代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if (myBoolThatAllowsAllOrientations)
    {
        return YES;
    }
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}

非常感谢马克西姆斯,聪明人!