2012-02-27 19 views
1

2つのビューコントローラがあり、2つ目のビューコントローラは最初のビューコントローラのラベルを変更する必要があります。これを実行する1つの方法は、最初のView Controllerをプロパティにして、2番目のView Controllerが直接変更できるようにすることです。2つのビューコントローラとスパゲッティを避ける

スパゲッティのプログラミングが問題なのは、このトラップで落ちることなく、どのように達成できるのでしょうか?

私が持っていた考えの1つは、これを行うために代理プロトコルを使用することでした。他の方法であれば、意見が不思議です。

答えて

1

ラベルを変更するなどの小さなタスクを実行する単純なアプリケーションでは、View Controllerのプロパティを作成することはあまりありません。アプリケーションの規模が拡大したり、多くのラベルを変更する必要がある場合は、デリゲートとプロトコルを設定して変更することが最善の方法です。主にあなた次第です:チームや大規模/成長のアプリを持っているなら、代理人とプロトコルの使用を検討することをお勧めします。これは、MVCやKVOの優れた実践のために使用する可能性が高いからです。私は相対的な客観Cのnoobの(何によってコーディングに新しいことを意味しないが)んだけど、委任方式は、ほとんどは常に私に細長いパスタのいくつかの方法をもたらすと思わので

0

おそらくそれはだ - 建てを除きますUITableViewControllerなどのシステムでは、

最近、カスタムテーブルビューセルのラベルを更新するシステムを作成する必要があり、NSNotificationを使用するのがはるかに簡単で分かりやすいことがわかりました。新しい値はビーイングに入って来るのコントローラでは、我々は、通知投稿:

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates]; 

を...とラベルを含むUITableViewCellのサブクラスを作成するには、我々はその特定の通知のために聞いている:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil]; 

... "formattedDates"(この場合)をメソッド "updateDateDisplays"に渡します。

これはどういうわけか間違っていると言えるでしょうが、私はそれが1)最小限のコードで仕事を得ていること2)読みやすく、検索可能で3)あなたが生活のためにこれをやっているのなら、お金です。

関連する問題