0

我有iPAD應用程序,它具有UIViewController A作爲根視圖控制器的導航控制器。 現在我有3個視圖控制器B,C,D作爲ViewController A的子視圖。查看控制器的視圖控制器和方向iOS

我希望B不響應方向,而C和D應該響應它。

當前使用代碼時,所有人都會響應方向更改。

還有另一個答案說,使兩個獨立的根ViewControllers,並將它們添加到Windows視圖。其中一個不旋轉和其他旋轉。我不能這樣做,因爲我有ViewController A中的標題,它切換B,C,D使它們成爲前面的viewController。

無論如何請建議。

謝謝

回答

1

您需要像這樣繼承UINavigationController。

.H

#import <UIKit/UIKit.h> 

@interface UINavigationController (Rotation) 

- (BOOL)shouldAutorotate; 
- (NSUInteger)supportedInterfaceOrientations; 

@end 

.M

#import "UINavigationController+Rotation.h" 

@implementation UINavigationController (Rotation) 

- (BOOL)shouldAutorotate { 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    if ([self visibleViewController] && [[self visibleViewController] isKindOfClass:[B class]]) { 
     return UIInterfaceOrientationMaskAll; 
    } 
    return UIInterfaceOrientationMaskPortrait; 
} 

@end 
+0

它是類別伴侶嗎?什麼是(旋轉)在這裏? – Mann

+0

我如何使用它夥伴 – Mann

+0

是的,它是一個關於uinavigationcontroller的類別。 – BoranA

0

您可以從UINavigationController的創建子類,或者使類吧。並執行這種方法:

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

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

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

然後,在你的控制器中,你應該實現這個方法,你想要的方向。

+0

它永遠不會調用topViewController的委託方法 – Mann

相關問題