1

iOS6より前に次のコードを動作させていましたが、iOS6、ストーリーボード、Xcode4.5で簡単に実行する方法が見つかりません。

-(IBAction) ButtonPressed:(id)sender{

    if(condition == 1]) {

        FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil];
        firstController.delegate = self;
        firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentViewController:firstController animated:NO completion:nil];
        [firstController release];
    }

    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
        secondController.delegate = self;
        secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentViewController:secondController animated:NO completion:nil];
        [secondController release];

}

これは以前は正常に機能していました。iOS6のコードをそのままにしておくと、どのコントローラーも正しく表示されません。コントローラのナビゲーションをストーリーボードに移行しようとしても、ButtonPressedからどちらか一方へのモーダルセグエを使用して移行をトリガーするアクションは1つしかないように見えるため、問題は解決しません。最初のコントローラーを2番目のコントローラーのviewdiloadに埋め込むには、独自の問題があります。それがviewdidloadにある場合、他の人が経験したように正しく機能しません。viewdidappearに配置すると、2番目のコントローラーが最初に表示され、不快なUIが作成されます。何か案は?

4

1 に答える 1

0

ビュー コントローラーは、一度に 1 つのビュー コントローラーのみを表示できます。別のアプローチが必要です。たとえば、目的を達成するためにナビゲーション ビュー コントローラーを使用できます。ユーザーがログインしている場合は、アップロード ビュー コントローラーをナビゲーション ビュー コントローラーのルート ビュー コントローラーとして設定します。ユーザーがログインしていない場合は、ルート ビュー コントローラーをログイン ビュー コントローラーとして設定します。ユーザーがログインすると、ログイン ビュー コントローラーはデリゲートでユーザーがログインしたことを通知し、アップロード ビュー コントローラーをナビゲーション スタックにプッシュできます。

- (IBAction)buttonPressed:(id)sender{

    UINavigationController* nvc;

    if(condition == 1) {
        FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil];
        firstController.delegate = self;
        firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        nvc = [[UINavigationController alloc] initWithRootViewController:firstController];
        [firstController release];
    }
    else {
        SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
        secondController.delegate = self;
        secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        nvc = [[UINavigationController alloc] initWithRootViewController:secondController];
        [secondController release];
    }

    [self presentViewController:nvc animated:YES completion:nil];

    [nvc release];
}

//Login view controller delegate method
- (void)loginViewControllerDidLoginSuccessfully:(FirstController*)loginViewController{
    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
    secondController.delegate = self;
    secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [secondController.navigationItem setHidesBackButton:YES];
    [loginViewController.navigationController pushViewController:secondController animated:YES];
    [secondController release];
}
于 2012-12-08T04:42:06.050 に答える