私は、ナビゲーションコントローラーのビューコントローラーが異なる方向規則を持つことを許可するという前の質問に従おうとしています。前の質問
たとえば、2つのビューコントローラがあります。最初はウェルカムセカンドホームです。最初のビューコントローラをPotraitのみにし、2番目(ホーム)をポート/ランドスケープの両方に許可したいと思います。
これを完了する方法を完全に理解しているかどうかはわかりません。完了したら、これを行う方法を説明する別のプロジェクトを作成し、将来の参照用に質問にGithub/shareに追加する予定です。
この特定のプロジェクトでは、サイドビューコントローラーのgithubプロジェクトを使用しています。PPRevealSideViewController。
私のアプリデリゲートは次のとおりです。
// Then we setup the reveal side view controller with the root view controller as the navigation controller
welcomeViewController = [[MESWelcomeViewController alloc] init];
UINavigationController *navController = [[MESNavViewControllerSubClass alloc] initWithRootViewController:welcomeViewController];
self.revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:navController];
[self.revealSideViewController setDirectionsToShowBounce:PPRevealSideDirectionNone];
[self.revealSideViewController setPanInteractionsWhenClosed:PPRevealSideInteractionContentView | PPRevealSideInteractionNavigationBar];
//self.window.rootViewController = welcomeViewController;
self.window.rootViewController = self.revealSideViewController;
[self.window makeKeyAndVisible];
上記から、ナビゲーションコントローラーをMESNavViewControllerとしてサブクラス化したことがわかります。これはこのファイルの私の頭です:
@interface MESNavViewControllerSubClass : UINavigationController {
BOOL setLandscapeOK;
}
MESNavViewControllerのImpファイル:
-(void)viewDidLoad {
NSLog(@"subclass called");
}
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
if (self->setLandscapeOK) {
// for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
return UIInterfaceOrientationMaskAll;
}
return UIInterfaceOrientationMaskPortrait;
}
私の最初の(ようこそ)View Controllerには、次のものがあります。
-(void)viewWillAppear {
BOOL setLandscapeOK = NO;
}
- (NSInteger)supportedInterfaceOrientations {
// Restriction for the welcome page to only allow potrait orientation
return UIInterfaceOrientationMaskPortrait;
}
私の2番目の(ホーム)Viewコントローラーには、次のものしかありません。
-(void)viewWillAppear {
BOOL setLandscapeOK = YES;
}
私が見ているのは、ナビゲーション内の両方のビューコントローラーがどちらの方向も許可していることです。正しく理解できているかわかりません。うまくいけば、私は十分な情報を提供しました。
編集-----最上位のコントローラーであるPPRevealSidePanelサブクラスを更新しました。次に、これはnavコントローラーを保持し、navコントローラーはviewコントローラーを保持します。向きは、表示されるビューコントローラによって決定する必要があります。
PPRevealSidePanelサブクラス-
次に、実際のView Controllerで、このサブクラスのセッターsetLandscapeOKを更新しようとするとエラーが発生します。ログインビューコントローラ-