ECSlidingViewController 2.0 отключает поворот для одного UIViewController

Моя сборка приложения с ECSlidingViewController 2.0 в качестве скользящего меню. Я хотел бы отключить поворот только для одного UIViewController . все мои UIViewController начинаются с UINavigationController.

Я создал подкласс UINavigationController для реализации методов и назначил подкласс всем UINavigationController в sotryboard. Но это не работает. похоже код не сработал.

Внутри MyNavigationController.m:

#import "MyNavigationController.h"
#import "ContactUsViewController.h"

@interface MyNavigationController ()

@end

@implementation MyNavigationController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (BOOL)shouldAutorotate {

    NSLog(self.topViewController.description);
    if ([self.topViewController isMemberOfClass:[ContactUsViewController class]]){
        return NO;
    }else{
        return YES;
    }

}

@end

ContactUsViewController — это UIViewController, который я не хочу вращать.


person user3491799    schedule 25.04.2014    source источник


Ответы (1)


5 шагов (я работаю с Storyboard и IOS 7)

  1. Подкласс ECSlidingViewController. (например, MyECSlidingViewController)
  2. Создайте свой собственный shouldAutorotate и поддерживаемые интерфейсы ориентации в MyECSlidingViewController.
  3. Подкласс UINavigationController и назначьте все ваши существующие UINavigationController. (например, MyNavigationController)
  4. Создайте свой собственный shouldAutorotate и поддерживаемые интерфейсы ориентации в MyNavigationController.
  5. в UIViewController вы хотите установить только портрет.

MyECSlidingViewController.m

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

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

}

MyNavigationController.m

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

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

YourViewController.m

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

Надеюсь, поможет !

person user1172579    schedule 26.04.2014