1

ユーザーがメールからデータをインポートできるように、ナビゲーション ベースのアプリにカスタム URL スキームを実装しているため、アプリのデリゲートに次のメソッドがあります。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

そのメソッドでデータをインポートした後、popToRootViewController を使用して rootViewController に戻り、ユーザーに新しいデータを表示できるとよいでしょう。

ただし、モーダル ビュー コントローラーまたはアクション シートが起動しているときにユーザーがデータをインポートした場合は機能しません (popToRootViewController はそれらを破棄せず、アプリをフリーズさせます)。

rootViewController を除くすべてのビュー コントローラ/アクション シート/アラート ビューを安全に却下/破棄できる方法はありますか?

または、ユーザーがアクション シートまたはモーダル ビュー コントローラーを起動しているかどうかを、アプリ デリゲート内から確認する方法はありますか?

それとも、中断したところからそのままにして、データが正常に追加されたことをすぐに示さないでしょうか?

4

1 に答える 1

1

それらを自分で追跡する必要があります。これを行う簡単な方法は、モーダルなものを表示するたびに、userinfoディクショナリのモーダルビュー/シート/アラートを参照して通知を投稿することです。モーダルビューが戻るたびに、別の通知を投稿してください。

アプリデリゲートの通知を確認します(または、そうすることが理にかなっている場合は、アプリデリゲートが最も簡単です)。最初の参照を受け取ったら、モーダルビューへの(弱い)参照を保存し、2番目の参照を受け取ったときに参照をゼロにします。-application:handleOpenURL:その間に、参照がnilでない場合は、モーダルビューを閉じることで応答できます。

アラートの場合は、バックグラウンドに入るときにアラートを閉じるのがおそらく最善であることに注意してください。再びフォアグラウンドになるまでに数週間かかる場合があります。ユーザーが何を求めているのかわからなくなったときに、ユーザーに「よろしいですか?OK/キャンセル」と挨拶するのは悪いスタイルです。

于 2010-11-03T20:00:01.713 に答える