プロジェクトに分割ビューを実装しました。私の左側のビューには、テーブルビューとボタンが含まれています。
そのビットトンをクリックすると、モーダルビューが表示されます。
ランドスケープモードでは正常に動作しますが、ポートレートモードの場合、ビューはフルスクリーンではなく左側のフレームビューと同じように表示されます。
ランドスケープ&ポートレートモードのios6でも問題なく動作します。
プロジェクトに分割ビューを実装しました。私の左側のビューには、テーブルビューとボタンが含まれています。
そのビットトンをクリックすると、モーダルビューが表示されます。
ランドスケープモードでは正常に動作しますが、ポートレートモードの場合、ビューはフルスクリーンではなく左側のフレームビューと同じように表示されます。
ランドスケープ&ポートレートモードのios6でも問題なく動作します。
詳細ビューコントローラに通知を登録し、モーダルビューコントローラを表示する必要がある場合は、ルートから通知を投稿するだけです。
ARCを使用していると仮定しましょう。分割コントローラーには、ルートコントローラーと呼ばれる左側のビューコントローラーと詳細コントローラーと呼ばれる右側があります。
詳細コントローラーでは、通知を登録および削除するためのコードを実装する必要があります。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(displayModalController) name:@"DisplayModalControllerNotification" object:nil];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)displayModalController {
UIViewController *myController = [[UIViewController alloc] initWithNibName:@"MyController" bundle:nil];
[self presentViewController:myController animated:YES completion:^{
// code to be executed after completition
}];
}
これで、このコードがルートコントローラーに配置されたので、次のコード行を使用して、必要なときにいつでも呼び出すことができます。
[[NSNotificationCenter defaultCenter] postNotificationName:@"DisplayModalControllerNotification" object:nil];
これは基本的なサンプルであり、必要に応じて変更します。たとえば、initでモーダルビューコントローラに配信される通知付きのオブジェクトを送信する必要がある場合などです。