2013-09-06 1 views
2

У меня есть 4 UIViewControllers - Назван как ControllerA, ControllerB, ControllerC, ControllerD.Поддержка ландшафта для одного uiviewController и Potrait для других в UINavigationController Stack

Где ControllerA является RootViewController в UINavigationStack.

ControllerA *ca = [[ControllerA alloc]initWithNibName:@"ControllerA" bundle:nil]; 
UINavigationController *nv = [[UINavigationController alloc]initWithRootViewController:ca]; 
self.window.rootViewController = nv; 

После этого нажимается ControllerB, они оба в Портретном, но проблема возникает здесь я хочу controllerC в пейзаже.

Я прошел через множество кодов, но любое удовлетворительное или рабочий раствор, но я все же удалось повернуть его, преобразуя вид вдоль угла -

[[UIApplication sharedApplication]]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight 
animated:YES]; 
self.view.transform = CGAffineTransformMakeRotation(M_PI/2); 

Но теперь я хочу представить модально ControllerD на controllerC и ему doesnot приходит в ландшафт, если это делает некоторым вращением, это нарушит все другие преобразования viewcontroller.

Сделав так много, я вернулся к той же проблеме создания ControllerC в ландшафте каким-то документальным методом.

ответ

1

Для портретного режима VC,

#pragma mark iOS 5 Orientation Support 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

    return UIInterfaceOrientationIsPortrait(interfaceOrientation); 
} 

#pragma mark iOS 6 Orientation Support 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Для ландшафтного режима ОК,

#pragma mark - iOS 5.0 and up Rotation Methods 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

    return UIInterfaceOrientationMaskLandscape; 

} 

#pragma mark - iOS 6.0 and up Rotation Methods 

- (NSUInteger)supportedInterfaceOrientations; 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 
+0

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

+1

в моем приложении, мой первый, второй, третий контроллер зрения - портрет. в четвертом виде контроллер находится в ландшафтном режиме. Я обработал ориентацию в каждом контроллере представления, как это. и в Plist все ориентации находятся в состоянии включения. – karthika

+0

Мама, когда делает это в ландшафте - SecondScreen * ss = [[SecondScreen alloc] initWithNibName: @ «SecondScreen» bundle: nil]; [self.navigationController presentViewController: ss animated: YES complete: nil]; но не тогда, когда я нажимаю его на yinavigationcontroller. есть что-то еще, что мне нужно сделать. –

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