ある画面から次の画面にマッピングしたセグエがあります。最初の画面は常に 2 ページ目に移動します。しかし、いくつかのコードが実行された場合にのみ、セグエが 2 番目のページに移動するようにしたいと考えています (たとえば、検証チェックに問題がなかった場合)。設定することは可能ですか?
ありがとう!
-(IBAction)add:(id)sender {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_sync(dispatch_get_main_queue(), ^{
[[CMPopupManager sharedObject] showWaitingPopup];
});
sleep(3);
dispatch_sync(dispatch_get_main_queue(), ^{
[[CMPopupManager sharedObject] closeWaitingPopup];
[self performSegueWithIdentifier:@"addCarSegue" sender:self];
});
});
}
(そして、ストーリーボードを使用して、ボタンではなくビューコントローラーからセグエアクションをドラッグします)
個人的には、検証ルールに合格するようにフィールドが変更されるまで、そのボタンが無効になっていることを確認することをお勧めします。したがって、これらのフィールドが変更されると、検証を実行し、検証ルールを満たした時点でセグエ ボタンを有効にします。
検証が複雑な場合 (サーバー ラウンド トリップが必要な場合など)、ボタンからセグエを削除し、ボタンIBOutlet
を検証する に接続し、成功すると、次のシーンに遷移/セグエします。
特定の BOOL が YES の場合にのみ、セグエ遷移が発生するようにすることができます。NOに初期化されたグローバル(必要なだけ広い、おそらくグローバル、おそらくそのスコープ内。ソースによって異なります)BOOL変数を用意します。検証がOKになったら、YESに変更します。
次のView Controllerを呼び出す関数を使用して(正確な形式は覚えていません)、if(verificationOK) { }
この方法では、そのコードに到達しても、verificationOK 変数が YES に変更されていない限り、if ステートメント内には入りません。
編集
コメントを読んだ後、プログラムでセグエをトリガーするだけです。IBAction を関数に接続します。たとえば、changeView
-(IBAction) changeView:(id) sender {
if(verificationOk) {
[self performSegueWithIdentifier:@"SeguesIdentifier" sender:nil];
}
}
セグエの詳細については、こちらをご覧ください