私はストーリーボードが初めてで、プログラムで呼び出されるセグエをいくつか接続しようとしています。
基本的に、私のアプリは WebSocket を使用してサーバーに接続し、サーバーから受信したメッセージに基づいてコンテンツを表示します。
したがって、アプリの最初のシーンは、サーバーに正常に接続されるまで表示される「接続中...」画面です。接続したら、次の画面を表示する必要があります。
これが私のストーリーボードです:
アプリがサーバーに接続すると、サーバーはクライアントの種類を尋ねるメッセージを送信します (モバイル Web サイトと Android アプリには同じサーバーが使用されます)。
アプリはこのメッセージをリッスンし、iPhone であるとサーバーに返信します。クライアントがログインできる状態になると、サーバーは「loginready」メッセージを送信します。
これは、ログイン画面に切り替えるために私が得た唯一のコードです。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UIViewController *loginVC = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
[mViewController presentViewController:loginVC animated:YES completion:nil];
しかし、移行には 15 秒ほどかかります (少なくともシミュレーターは... サブスクリプションが数週間前になくなりました)。
私はもともとこれを試しました:
[mViewController dismissViewControllerAnimated:YES completion:^() {
[mViewController performSegueWithIdentifier:segueID sender:mViewController];
}];
現在のシーンはどこmViewController
にありますUIViewController
が、これはまったく何もしませんでした..同様に、エラーやコードが実行されたという証拠もなく、「接続中...」ページにとどまりました。
サーバーが「logintrue」メッセージを送信し、ログイン画面が閉じた後、このコードを 3 番目のシーンに移動しようとしましたが、「接続中...」画面が表示されるだけで、3 番目のシーンには決して移行しませんでした。
このテクニックを使わなければならないかどうかpresentViewController
はあまり気にしませんが、それほど遅くならないようにすることができる場合に限ります.
どんな助けでも大歓迎です!