iPhoneでメールアプリのデザインを複製しようとしています。ツールバーのラベルが更新/変更され、送信されているメールのステータスが表示されます。
これを複製する最良の方法は何ですか?以下は私が考え抜いたことであり、おそらく誰かがそれらの1つが機能する理由や新しいアイデアを提案することができます。
団結のために、私が次の見解を持っているとしましょう:A -> B -> C - D
。A
、、、B
およびC
はUINavigationControllerにプッシュされ、UINavigationControllerからプッシュされ、問題のツールバーがあります。D
は「作成」ウィンドウであり、のモーダルウィンドウですC
。そして、私が作成しようとしているオブジェクトをと呼びましょうobj
。
委任
これには、を作成obj
して、、A
に渡す必要がB
ありC
ます。onC
などのメソッドを呼び出し、電子メールを送信しようとします。'obj'には、ツールバーを更新するためにデリゲートされたクラス()に配列を送信するデリゲートメソッドがあります。送信プロセスを通じて、進行状況バーを更新するために複数のメッセージを送信し、最後に、送信が成功したか、最後の電子メールチェックが行われた日付を通知します。sendMail
obj
obj:hasUpdateForToolbar:
C
このソリューションの問題は、更新されないことA
ですB
。ポップオフC
されると、デリゲートを再割り当てする必要がありB
、次の値がによってプッシュされる前に、ツールバーに古い値が点滅します(私は思います)obj
。
通知
これは、オブジェクトをすべてのクラスに渡す必要がないという点でデリゲートよりもクリーンです。つまり、クラス間の依存関係が少なくなります)。ただし、接続がないためC
、新しいメールを送信する準備ができているという通知を投稿する必要があります。obj
その通知を受信してから、デリゲートメソッドの代わりに新しい通知を投稿する必要があります。
これに伴う問題は、ビューが表示されていないときに通知の購読を解除するのが一般的な方法であるということです。B
したがって、通知をサブスクライブして、ツールバーの次の更新がプッシュされるのを待つのと同じフラッシュがあると思います。
KVC
Key-Valueコーディングで処理できるように、これをどのように設定できるかはよくわかりません。obj
各ビューのツールバーに配置され、更新されると(ラベルまたはプログレスバーのいずれかで)、すべてのツールバーに反映されるビューを設定できますか?
それで、どれが最高です/私はこれらに何が欠けていますか?