12

ビューコントローラでviewDidLoadが呼び出されるとすぐに、ストーリーボードのセグエをトリガーしようとしています。セグエには識別子が付加されており、ボタンやその他のコントロールにリンクされているメソッドの内部から呼び出されると正常に機能します。ただし、viewDidLoad内では機能しません。黙って失敗します。viewDidLoadでセグエが無視されることについてのルールはありますか?

私はこれを両方試しました:

[self performSegueWithIdentifier: @"mySegue" 
                          sender: self];

この:

[self dismissViewControllerAnimated:YES completion:^() {
[self performSegueWithIdentifier:@"mySegue" sender:self];
}];

どちらも機能しません。

4

2 に答える 2

21

まだ表示されていないViewControllerを閉じることはできません。didLoad純粋にメモリ管理機能を備えているため、コンストラクター(の一部)として使用できます。うまくいくかもしれませんが、セグエを開始するviewDidAppearことですが、最初に必要なビューから開始することをお勧めします。

于 2012-04-25T03:08:28.203 に答える
1

最も可能性の高い理由は、進行中の2番目の画面遷移呼び出しをOSが無視することである可能性があります。ViewDidLoadでは、(現在のビューの)ビュー遷移はまだ完了していません。完了する前に別の遷移を要求していて、OSはそれを無視します。別の関数から呼び出されたときにセグエが機能するのは、この理由に違いありません。ViewDidAppear内で(または時間遅延後に)呼び出してみてください

于 2012-04-25T03:04:43.257 に答える