短い:Windowsフォームのようなブロックモーダルビュー/ダイアログを実装することは可能ですか?
私はビューまたはアクションシートを表示し、ユーザーがビュー/シートを閉じた後にのみコードの実行を続けます。したがって、1行目はビューを表示し、2行目は結果変数を読み込みます。私はこれを必要とする理由を詳細に
:
私は、Windowsを移植していますがiPadにアプリケーションをオーバーフォーム。元の実装には、Webサービスを使用してサーバーと通信する通信クラスがあります。それは、データを取得するためのいくつかの方法を提供します。都合の良いことに、ユーザが有効な接続をまだ持っている場合、またはセキュリティ上の理由からユーザがパスワードを再入力する必要がある場合は、各コールの前にチェックします。 パスワードが必要な場合、.NETクラスにはモーダルダイアログが表示され、それ以上のコード実行をブロックします。パスワードが入力された場合は、ダイアログを表示する前に最後に呼び出したものを再試行します。
今、私は問題に直面しているココアタッチを使用しています。ダイアログを示すコードをUIActionSheetに置き換えました。 Windowsフォームでは、ダイアログが閉じられるまでブロックされます(ダイアログを表示した後の次の行はダイアログから入力されたパスワードを読み取ることです)。
ユーザーがUIActionSheetを終了するまでThread.Sleep()を試しましたが、Thread.Sleep()もメインループをブロックし、私のビューは描画されません。
私が現在見ている代替案は、すでに動作しているクラスのすべてのメソッドを変更し、戻り値を与えることです。パスワードが必要な場合は、それを処理してから、再試行してください。
しかし、これは私のコード全体で、いつでもパスワードが必要な場合があるため、これらのチェックを追加する必要があることを意味します。そのため、Windowsフォームの通信クラスにネストされています。
他のアイデアはありますか?
ルネ
すごいです!ありがとうミゲル! – Krumelur
ブロックループを実行するときに問題があります。私はEntryEndedイベントでこのコードを持っており、ユーザーがデバイスを回転させるとループは終了せず、アプリケーションがハングアップしているように見えます。 – danmiser