UINavigationController の上にある 1 つのビュー コントローラーを制限しようとしています。そのために、UINavigationController サブクラスを作成し、2 つのメソッドを実装しました。
- (BOOL)shouldAutorotate {
return [[self.viewControllers lastObject] shouldAutorotate];}
- (NSUInteger)supportedInterfaceOrientations {
return [[self.viewControllers lastObject] supportedInterfaceOrientations];}
UINavigationController (ルート ビュー コントローラー) の上にある最初のビュー コントローラーをポートレート モードにし、ルート ビュー コントローラーからプッシュする次のビュー コントローラーをランドスケープ モード (のみ) にする必要があります。
したがって、両方のビュー コントローラーでこれら 2 つのメソッドをオーバーライドしています。ルートビューコントローラーで
- (BOOL)shouldAutorotate {
return NO;}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;}
次のView Controllerで
- (BOOL)shouldAutorotate {
return YES;}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;}
正常に動作しますが、完全ではありません。初めてView Controllerを押したとき、ポートレートモードで表示され(予想どおりランドスケープに制限されません)、デバイス/シミュレーターを回転させて正常に動作し、ランドスケープのみに制限します。
誰でもこれを手伝ってもらえますか?