いくつかの状態を格納しているUIWebViewベースのアプリケーションがあります。私はネイティブタブバーと上部バーを持っています。私が必要とするのは、ネイティブバーをクリックすると、UIWebViewに格納されているデータを保持するということです。 Objective-Cは、Objective-Cを呼び出すUIWebViewのjavascriptを呼び出します。スレッドの問題
はこれを行うために、私は、JSONオブジェクトを作成するためにevaluateJavaScriptByStringと呼ばれ、それがUIWebViewDelegateプロトコルを介して目的-Cへのコールバックを行います。しかし、私は、コールバックが非同期であるため、私のメイン・トランザクションは、データがロードされる前に起こることがわかります。
どのようにこの問題を解決できるか考えてみましょうか?
更新:より良い問題を説明するために: -
- 私は誰かがにいくつかのデータを置くことフォームをHTMLページを持っています。
- マイタブバーはネイティブです。
- タブバーのボタンをクリックすると、HTMLのデータがObjective-Cモデルに保存され、ビューが別のビューに変更されます。
ボタンをクリックするとJavaScriptコールが(Objective-Cに送信するJSON文字列を作成するために)発生し、このデータはobj-cモデルに保存されます。ただし、これは非同期に発生します。したがって、データがモデルにロードされる前に画面が変更されます。次の画面を更新すると、正しいデータが表示されます。この周りに道があるかどうか疑問に思っていた。
注、私はWebViewsからObjective-Cの関数を呼び出す方法を知っています。とにかくJSOBjBridgeを使用しています。
これはすでにJSObjBridgeを使用して行われています。問題はそうではありません。問題をより良く説明するには - – VikrantY
tabbarController:shouldSelectViewController:でNOを返すことができ、モデルにデータが書き込まれるときにタブを手動で変更すると、それはnotificationcenterを使って行うことができます。とにかく、JSObjBridgeとは何ですか?それはあなたまたは第三者ですか? – Antigluk
はいJSOBjBridgeは第三者ですが、JavascriptからObj-C関数を呼び出すのはかなり標準的です。通知センターを理解する必要があります。 – VikrantY