как изменить ориентацию экрана на новом модальном контроллере iOS

У меня есть приложение, разработанное для iPhone с Xcode, которое отображает мои контроллеры просмотра в портретном режиме с активированным вращением.

в моем табличном представлении есть ячейка, которая запускает новый контроллер представления (iPhoneSignVC) в модальном режиме, мой вопрос...

есть ли способ определить ориентацию моего нового контроллера модального представления с самого начала?? Я имею в виду... Я хочу, чтобы мой новый контроллер представления был в ландшафтном режиме и без функции поворота экрана, активированной на этом конкретном контроллере представления.

до сих пор я создавал новый класс, который перезаписывает класс контроллера UINavigation.

#import "UINavigationController.h"
#import "iPhoneSignVC.h"

@implementation UINavigationController (overrides)

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

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


    return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    id currentViewController = self.topViewController;

    if ([currentViewController isKindOfClass:[iPhoneSignVC class]]){
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
    }

    return (interfaceOrientation == UIInterfaceOrientationMaskAll);
}


@end

Я пробовал это без успеха ...

Заранее спасибо за вашу поддержку


person Jesús Ayala    schedule 05.09.2013    source источник


Ответы (2)


Я думаю, это все, что вам нужно, чтобы ваш модальный вид открывался в нужной вам ориентации:

#import "UINavigationController.h"
#import "iPhoneSignVC.h"


@implementation UINavigationController (overrides)

- (NSUInteger)supportedInterfaceOrientations {

    if ([self.topViewController isKindOfClass:[iPhoneSignVC class]])
        return UIInterfaceOrientationMaskLandscape;

    return UIInterfaceOrientationMaskAll;
}
@end
person Jesus    schedule 05.09.2013

Есть несколько соображений, которые учитываются при этом в зависимости от базовой ОС. Проверьте это очень подробный вопрос и это решение .

person Nirav Bhatt    schedule 05.09.2013
comment
Вы разместили ссылки на вопрос, на который принят ответ: больше ссылок. Попробуйте опубликовать ответ вместо ссылок, так как если ссылки меняются, то ответ бесполезен - person simon_smiley; 12.01.2015