12

XCode4.2のストーリーボード機能を使用してiOSアプリを設計しています。アプリには、ユーザー名とパスワードを取得するログイン画面があり、ログインするためのボタンがあります。ログインボタンを押すと、別のViewControllerへのプッシュシーケンスがトリガーされます。ただし、次のView Controllerに進む前に、ログインが正常に戻るまでシーケンスを待機させたいと思います。

私は知ってprepareForSegue:sender:いますが、ここに私の問題があります:ログイン呼び出しは非同期です。そのため、そこでログインできません。

どういうわけかこれの周りにありますか?ストーリーボードに、(ボタンがクリックされたときではなく)希望するときにのみトリガーされるシークを作成できますか?

4

3 に答える 3

38

わかりました、私はそれを理解しました。UIButton私はaから次へのセグエを定義しましたUIViewController。このように定義されているように、条件付きでセグエを実行する方法はありません。

ボタンにセグエを置く代わりに、最初UIViewControllerから別のセグエを作りましたUIViewController。これはセグエを定義しますが、アクションを関連付けません。そこからperformSegueWithIdentifier:sender:、そのセグエを実行したいときに(私の場合は非同期タスクが完了したときに)呼び出すことができます。

私にとってこれの主な利点は、IBがその構造を維持していることです。

私を正しい方向(+1)に向けてくれた@cli_hltに感謝します。

于 2011-11-21T16:29:53.320 に答える
5

IBにそのようなアクションを実行する方法があるかどうかはわかりません(私はそれを強く疑っていますが)ので、使用することをお勧めします

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

非同期ログインが成功を通知したときにViewControllerで。

于 2011-11-19T00:58:20.020 に答える
1

UIStoryBoardのインスタンスでinstantiateViewControllerWithIdentifierを呼び出すこともできます。これにより、ストーリーボード内の任意のポイントへのViewController参照が返されます。そこから、好きなようにそれを提示することができ、それはあなたのストーリーボードの流れを拾います。

于 2011-11-30T05:33:07.377 に答える