如何使用uinavigationcontroller停止旋转一个视图控制器?

时间:2014-05-07 08:22:26

标签: objective-c ios7 uinavigationcontroller

嘿伙计们,我见过许多类似的问题,但无法达成任何解决方案。我正在使用故事板创建一个通用应用程序,并且具有一个具有根视图控制器v1的导航控制器,因此最初顶视图控制器是v1。点击v1上的按钮,它会推动视图控制器v2。现在我希望应用程序应该向所有视图控制器旋转,除了视图控制器v2。我已检查部署信息中的所有设备方向,并尝试创建uinavigationcontroller的类别

#import <UIKit/UIKit.h>

@interface UINavigationController (autorotation)
-(BOOL)shouldAutorotate;
-(NSUInteger)supportedInterfaceOrientations;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation;
@end

#import "UINavigationController+autorotation.h"
#import "AboutViewController.h"

@implementation UINavigationController (autorotation)

-(NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
{
   return [self.topViewController shouldAutorotate];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [self.topViewController preferredInterfaceOrientationForPresentation];
}

我的问题是应用程序正在为所有屏幕旋转,但我想停止视图控制器v2的旋转,如上所述。我真的有两天请帮助我

2 个答案:

答案 0 :(得分:0)

- (BOOL)shouldAutorotate
{
    id currentViewController = self.topViewController;

    if ([currentViewController isKindOfClass:[v2 class]])
        return NO;

    return YES;
}

//在您的代码中添加此方法并告诉我其工作与否。

答案 1 :(得分:0)

This is a useful link i used once它会对您提出的问题进行反思,但仍然可以使用它。

另一种方法是将此视图放在您不想旋转的视图中

- (BOOL) shouldAutorotate {
return NO; }

不要忘记将视图旋转到适当的InterfaceOrientation,就像这样

  

[self willAnimateRotationToInterfaceOrientation:1 duration:1];

你可以将它放在viewWillApear;