2011-08-30 5 views
3

ビューの下にpresentModalViewController:が表示された状態でユーザーが対話しているときに、どのようにカールアップされたビューの更新をライブで行いますか?UIModalTransitionStylePartialCurlを使用しているときにpresentModalViewControllerの後ろを更新するには?

は挙動が私がしたい:

  1. ユーザーは、ビューの設定]ボタンをタップします。
  2. ユーザーは、表示設定画面でコントロールをタップします。ビュー設定を解除するのではなく、バックグラウンドで自動的に更新されます。
  3. ユーザーが表示設定を解除するものをタップします。

マップでマップ、サテライト、ハイブリッドが自動的にカールが解消されずに表示が更新されたとします。

何かが変更されたことを設定コントローラからメインビューコントローラに戻すことができます。メインビューコントローラは、自身の一部を再描画する必要があることを更新して通知できますが、実際には画面を更新するのは断続的です。 5回連続して動作し、その後数回動作しないで、5回連続して動作します。しかし、モーダルビューを閉じると、その下のビューが常にキャッチアップされるので、私のビューのレンダリングされたイメージは、時々キャッシュされているか、リクエストにもかかわらず再描画されません。しかし、私はこれを確認する方法を考えることはできません。

これは、デバイスとシミュレータの両方で発生します。

答えて

1

この現象の根本原因は複数ある可能性がありますが、ここではUIKitビューの更新が「遅延」または「断続的」になるという一般的な問題があります。

プレゼンテーションビュー(またはプレゼンテーションビュー)を更新するステートメントがメインキュー以外のディスパッチキューで実行されている場合、UIKitは実際のUI更新で矛盾した結果とタイミングを生成する可能性があります。通常は、UIを更新するステートメントにブレークポイントを設定し、Xcodeの左側のデバッガビューに表示される「キュー」の名前を調べることで判断できます。 'com.apple.main-thread'にする必要があります。そうでなければ、それはあなたの問題かもしれません。これは、ネットワークAPIなどのかなりのデリゲートメソッドで発生する可能性があります。

のディスパッチ_アシスト(ディスパッチ_get_main_queue()、^(){...});それが役立つかどうかを確認してください!必要なときにこれを行うだけで、いつものようにブロックセーフなテクニックを使用するよう注意してください。

私は、部分的なカール移行を使用して表示されたビューコントローラ付きのiPadシミュレータを使用して、iOS 7.0.3用の新しいユニバーサルアプリでこれをテストしました。上記のコードでバックグラウンドキューを使用して表示されたビューを閉じると、断続的な更新と 'スナップ'更新を含む元の問題を再現することができました。メインキューに切り替えると、すべてが正常に機能しました。

このことができますまたは他のいくつかの問題:)

+0

が理論的にあった場合、すべてはすでにメインキューにあるべきなら、私に教えてください。しかし、私はこれを調べます。 (そして、少なくとも、それはうれしいです。) –

+0

ありがとう!私は掲示しておく... – Abominabl31

関連する問題