私のアプリケーション ウィンドウのルート ビュー コントローラーは、サブクラス化された UINavigationController です。このコードをクラスに追加しました:
- (BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
ルート UIViewController に、次のコードを追加しました。
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
このビュー コントローラーでデバイスを横向きに回転すると、モーダル ビュー コントローラーが表示されます。デバイスが回転して縦向きに戻ると、モーダル ビューを閉じる必要がありますが、そうすると次のエラーが発生します。
'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'
このエラーが発生するのはなぜですか?
ルート UIViewController の shouldAutorotate から YES を返そうとしましたが、「サポートされている向きにはアプリケーションと共通の向きがありません。また、shouldAutorotate が YES を返しています」というエラーが表示されます。UIInterfaceOrientationPortrait はアプリケーションでサポートされている向きの 1 つであるため、これは私には意味がありません。