0

コードでセグエしようとしています。prepareForSegue 関数が実行され、正しい宛先ビュー コントローラーが表示されますが、何も起こりません。不足しているものや設定を誤ったものについてのアイデアはありますか?

コントローラの可能なパスを表示:

A ->B (sgueResultat)
or
A->C (sgueStopSplash)

セグエを選択するコード:

if (proversion)
    [self performSegueWithIdentifier:@"sgueResultat" sender:self];

}
else {
    [self performSegueWithIdentifier:@"sgueStopSplash" sender:self];

}

`

私が確認できる prepareForSegue は、NSLog によって実行されています。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
 NSLog(@"Source Controller = %@", [segue sourceViewController]);
 NSLog(@"Destination Controller = %@", [segue destinationViewController]);
 NSLog(@"Segue Identifier = %@", [segue identifier]);

nslog 出力:

2012-06-26 22:22:26.002 ClosetV2[2333:fb03] Source Controller = <ABStartViewController: 0xeb12270>
2012-06-26 22:22:26.002 ClosetV2[2333:fb03] Destination Controller = <SplashAfterStopViewController: 0x6b2c9e0>
2012-06-26 22:22:26.003 ClosetV2[2333:fb03] Segue Identifier = sgueStopSplash
2012-06-26 22:22:26.003 ClosetV2[2333:fb03] sgueStopSplash

よろしくアンドレアス

4

1 に答える 1

0

ストーリーボードでセグエが「モーダル」に設定されていることを確認してください(または、気の利いた場合はカスタム)。

ストーリーボードが登場したときに最初にセグエを使い始めたとき、UINavigationController が組み込まれている場合にのみ実行できるプッシュを使用しようとし続けたことを覚えています。そうしないと、プッシュ セグエが機能しません。

別の考え...以下のコードはどこで実行されていますか? アニメーションが既に実行されている場合、または現在のビューがまだ画面に表示されていない場合、正しく機能しません。たとえば、viewDidLoad にこのコードがある場合、機能しません。

if (proversion)
    [self performSegueWithIdentifier:@"sgueResultat" sender:self];

}
else {
    [self performSegueWithIdentifier:@"sgueStopSplash" sender:self];

}

編集:更新された回答

セグエを実行する前に [self disconnectModalViewController:YES] アニメーションが完了するのを待つのは、実際には面倒でやや面倒です。それを行うための「適切な」方法はないと思います。ただし、モーダル コントローラーを持つビュー内に次のメソッドを配置し、[self disconnectModalViewController:YES] を使用してからメッセージを送信すると、うまくいくはずです。

- (void)waitUntilModalControllerIsDismissed
{
    if(self.modalViewController)
    {
        [self performSelector:@selector(waitUntilModalControllerIsDismissed:)
                   withObject:nil 
                   afterDelay:0.1f];
        return;
    }
    else
    {
        //At this point, the modal animation will be completed and you can perform your segue if you want
    }  

}
于 2012-06-26T20:43:47.113 に答える