1

わかりましたので、回転時に提示されたストーリーボードを変更するための独自の方法をテストしており、方向をチェックして正しいストーリーボードを適切にロードする 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
4

0 に答える 0