2011-11-19 11 views
12

XCode 4.2のストーリーボード機能を使用してiOSアプリケーションを設計しています。このアプリケーションには、ユーザー名とパスワードを使用しログインするためのボタンがあるログイン画面があります。ログインボタンを押すと、別のView Controllerにプッシュシーキングがトリガーされます。しかし、次のView Controllerに進む前に、ログインが成功して戻ってくるまで待機する必要があります。iOS:ログインが成功するまで待ちます。

私は約prepareForSegue:sender:を知っていますが、私の問題をheres:ログイン呼び出しは非同期です。私はそこでログインすることはできません。

この周りにはどこかありますか?ストーリーボードに、(ボタンをクリックしたときとは対照的に)欲しいときにのみトリガーされるセークを作成できますか?

答えて

37

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

ボタンの上にセグを置くのではなく、最初のUIViewControllerからもう1つのUIViewControllerまでセグを作りました。これはセグを定義しますが、セグメンテーションをアクションに関連付けません。そこから私はそのセグを実行したいときにperformSegueWithIdentifier:sender:と呼ぶことができます(私の場合、非同期タスクが完了したときです)。

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

@cli_hltに感謝して私を正しい方向(+1)に向けることができました。

5

(私は強くそれを疑うが)、このようなアクションを実行するIBにおける方法があるかどうか私は知らないので、私はビューコントローラに

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

を使用することをお勧めする場合、あなたの非同期のログイン信号成功。

+0

私はそれを見ました。私は、IBの流れを壊さないようにするための方法があることを望んでいました。 – mtmurdock

1

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

+0

それはIBでも表示されません。私はストーリーボード上のフローチャートを維持しようとしていました。あなたが示唆していることは、IBの2つのコントローラーの間にリンクを表示しないということです。私の答えを読んだら、IBを使ってセグを定義している間に、あなたが提案しているものと本質的に同じことをやり遂げることができました。入力いただきありがとうございます! +1 – mtmurdock

関連する問題