iPhoneのメールアプリケーションのデザインを複製しようとしています。ツールバーのラベルが更新/変更され、送信されるメールのステータスが表示されます。iPhone - UIToolbar - デリゲートメソッド/通知/ KVC
これを複製するにはどうすればよいですか?以下は私が思ったことであり、誰かがなぜ彼らの仕事や新しいアイデアを提案するかもしれない。
私は、以下のビューを持っていると言うことができます:A -> B -> C - D
。 A
,B
、およびC
がUINavigationControllerの内部でプッシュされ、UINavigationControllerがオフになり、問題のツールバーが表示されます。 D
は「作成」ウィンドウで、C
のモーダルウィンドウです。そして、私が作成しようとしているオブジェクトを呼び出すことはobj
です。
委任
これはA
で1 obj
を作成する私を必要としB
、およびC
に渡します。 C
は、obj
のsendMail
などのメソッドを呼び出し、電子メールを送信しようとします。 'obj'は委譲されたクラス(C
)に配列を送信してツールバーを更新するデリゲートメソッドobj:hasUpdateForToolbar:
を持つでしょう。送信プロセスを通じて、プログレスバーを更新するために複数のメッセージを送信し、最後に成功したか、最後の電子メールのチェックが行われた日付を通知します。
この解決策ではの問題はA
またはB
に更新されません。 C
がポップされると、代理人はB
に再割り当てする必要があり、次の値がobj
でプッシュされる前にツールバーに古い値のフラッシュがあると思います。
通知
これは、あなたがクラス間の依存関係少ない)を意味し、すべてのクラスにオブジェクトを渡すために持っていないという点で、デリゲートよりもきれいになります。しかし、接続していないので、C
には、新しいメールを送る準備ができているという通知をポストする必要があります。 obj
は、その通知を受け取る必要があり、その後、デリゲートメソッドの代わりに新しい通知をポストする必要があります。
問題はです。これは、ビューが表示されていないときに通知の登録を解除するのが一般的な方法です。ですから、私は、B
と同じフラッシュがあり、通知に加入し、それがツールバーの次の更新をプッシュするのを待つと思います。
KVC
私は本当にキー値コーディングはそれの世話をするように私はこれを設定することができるかわかりません。 obj
のビューをセットアップして、各ビューのツールバーに入れて、ラベルやプログレスバーを使って更新すると、すべてのツールバーに反映されますか?
これは最高です/私はこれらに欠けていますか?
これは多くの意味があります。私は各オブジェクトを介してデリゲートを渡すだけで、私のアプリケーションのすべてのビューがそれにアクセスする必要があったわけではありません。答えをありがとう。 – RyanJM