2015-11-27 2 views
1

Я просто создаю новое приложение с одним представлением и пишу три funcs в файле ViewController.m.ios preferInterfaceOrientationForPresentation не называется

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

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

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationLandscapeLeft; 
} 

Первый вопрос

Я ожидаю, что имитатор вращать мой взгляд, но ориентация взгляд портрет. И я нахожу третий func, не вызываемый в ViewController. Зачем?

Второй вопрос

Я читал некоторые блоги, они сказали, что если shouldAutorotate вернуть NO, то функ supportedInterfaceOrientations не называется, но в моем тесте, это Func звонил несколько раз, почему?

ответ

1

Вы должны использовать подкласс UINavigationController (не уверен, что вы используете навигацию в своем проекте ...) и реализуете эти методы в подклассе. Не забудьте установить свой подкласс, как вид-контроллер навигации контроллера Пример для навигационного контроллера подкласса:

// add this in your CustomNavigationController.h file 

#import <UIKit/UIKit.h> 

@interface CustomNavigationController : UINavigationController <UINavigationControllerDelegate> 

@end 

// add this in your : CustomNavigationController.m file 

#import "CustomNavigationController.h" 

@interface CustomNavigationController() 

@end 

@implementation CustomNavigationController 

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

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return [self.visibleViewController preferredInterfaceOrientationForPresentation]; 
} 

@end 
+0

нет navigationController, просто ViewController в RootViewController. –

+0

вам нужен навигационный контроллер :) – edo

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