2

У меня есть определенные viewControllers, которыми управляет UINavigationController (push и pop). Я хочу ограничить разные viewControllers разными orientations, как и первый, должен быть только в Portrait, второй в portrait, третий в landscape и четвертый может быть portrait и landscape оба. Я поставил ViewController на isInitialViewController из storyBoard, тоAuto Rotation iOS 8 Контроллер навигации

- (BOOL) shouldAutorotate{ 
return NO; 

}

работал без каких-либо проблем, но когда я установить navigation controller (управление этими четыре вида нажимом и поп), как isInitialViewController от storyBoard, эта функция остановлена и теперь autoratates. Как я могу остановить autorotating эти взгляды, используя это UINavigationController как isInitialViewController. Я использую следующие функции зависит от того, ViewController это

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ 
return (interfaceOrientation == UIDeviceOrientationPortrait);//choose portrait or landscape} 

- (BOOL) shouldAutorotate{ 
return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
//return UIInterfaceOrientationMaskLandscape; 
return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
// return UIInterfaceOrientationLandscapeLeft | 
// UIInterfaceOrientationLandscapeRight; 
return UIInterfaceOrientationPortrait; 
} 

ответ

1

Просто подкласс UINavigationController и переопределить соответствующие методы:

.h файла:

@interface CustomUINavigationController : UINavigationController 
@property BOOL canRotate; 
@end 

.m Файл:

@implementation CustomUINavigationController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

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

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 



- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 

- (BOOL)shouldAutorotate 
{ 
    return self.canRotate; 
} 
@end 
+0

Спасибо ,, Ответ правильный, но я только заметил, что мой сценарий был немного другим, и поэтому я реализовал эти функции в своем SlideView, и он сработал. Спасибо большое :) –

1

Что делать, если вы сделаете Objective категории C для UINavigation контроллера и Переопределить методы ориентации интерфейса ... Я думаю, что у попытаться контролировать AutoRotation.

Objective C категория http://rypress.com/tutorials/objective-c/categories

+0

Можете ли вы дать мне какой-нибудь пример кода, пожалуйста? –

+0

Очень легко быстро пройти через него и реализовать метод ShouldAutorotate и попытаться контролировать авторотацию. –

+0

разработать категорию для UINavigationController –

 Смежные вопросы

  • Нет связанных вопросов^_^