わかりましたので、回転時に提示されたストーリーボードを変更するための独自の方法をテストしており、方向をチェックして正しいストーリーボードを適切にロードする if-else ステートメントを実行する別のメソッド-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
に割り当てる方法を使用して行っています。self
私が抱えている問題は、それがポートレートモードであるか、ステートメントのelse部分であるかを確認することです。シミュレーターでアプリを実行し、デバイスを横向きに回転すると、横向きのストーリーボードが読み込まれます。しかし、デバイスを回転させて縦向きモードに戻しても、縦向きのストーリーボードには戻りません。最初は、ビューコントローラーを閉じていないことが問題だと思っていましたが、それを行ってもまだ機能しませんでした。機能していないのはステートメントの else 部分であることに気付きました。NSLog(@"PMComplete")
アプリを再度実行し、横向きに回転して元に戻した後でも、ログには表示されませんでした。ここで何が悪いのか、誰か考えていますか?これをポートレート ストーリーボードのビュー コントローラーで操作しています (ポートレート ストーリーボードのビュー コントローラーを ViewController クラスに割り当てます)。また、ストーリーボードなしでこのアプリを作成し、それらをゼロから作成し、肖像画を AppDelegate から読み込まれるものとして割り当てました。
ここに私の ViewController.m ファイルがあります:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize isLandscape;
@synthesize isPortrait;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)viewChanged {
UIInterfaceOrientation theOrientation = self.interfaceOrientation;
UIStoryboard *portraitStoryboard;
UIStoryboard *landscapeStoryboard;
portraitStoryboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
landscapeStoryboard = [UIStoryboard storyboardWithName:@"LandscapeStoryboard" bundle:nil];
UIViewController *portraitViewController = [portraitStoryboard instantiateInitialViewController];
UIViewController *landscapeViewController = [landscapeStoryboard instantiateInitialViewController];
if (theOrientation == UIInterfaceOrientationLandscapeLeft ||
theOrientation == UIInterfaceOrientationLandscapeRight) {
[portraitViewController dismissViewControllerAnimated:NO completion:nil];
[self presentViewController:landscapeViewController animated:NO completion:nil];
NSLog(@"LSComplete");
}else{
[landscapeViewController dismissViewControllerAnimated:NO completion:nil];
[self presentViewController:portraitViewController animated:NO completion:nil];
NSLog(@"PMComplete");
}
}
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self viewChanged];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end