2010-07-22 44 views
0

這是我不能工作的東西....我可以使視圖控制器與我的自定義對象聊天就好了....但是如何將消息從我的對象發送到視圖控制器?模型如何與視圖控制器交談?

從myViewController爲myObject的消息將如下所示 [myObject的doSomething的]。

相反的消息是什麼樣的?以另一種方式發送消息是否有意義?

非常感謝您的幫助!

+0

除了「退貨」? – 2010-07-22 01:31:03

+0

不知道你是什麼意思...你必須非常明確,因爲我對此很新穎...... – Ben 2010-07-22 01:32:43

+0

沒有「相反的訊息」。這是一個「返回」聲明。 – 2010-07-22 01:38:03

回答

5

您可以將控制器傳遞給模型,但通常需要模型不依賴於視圖或控制器。

爲了避免這種情況,使該模型想告訴和具有視圖控制器實現它,並有模型採取協議,而不是視圖控制器作爲一個屬性的實例的協議。

2

爲什麼你想要你的模型積極地與任何事情談話?視圖控制器是應用程序流的主動管理者,並啓動與模型的通信,而不是相反。

你可以說一個更具體的情況下,你真的需要這樣做嗎?

就像你懷疑自己一樣,大多數情況下,「以其他方式發送信息是沒有意義的」。但是如果你確實需要這麼做的話,一種合適的方式將信息從模型中「傳出」出notifications.您可以讓模型發送通知,並且視圖控制器或任何其他對象可以訂閱這些通知(如果他們在意的話),但是從模型到其他應用程序片段沒有緊密耦合。

+0

非常感謝Jaanus ....這就是我想知道的。我注意到在他們的文檔中使用術語通知的蘋果。我會檢查你的鏈接。非常感謝你和所有其他人的回答! – Ben 2010-07-22 02:38:43

3

我經常使用NSNotificationCenter從模型對象向感興趣的控制器廣播更新。對於更緊密的綁定交互,請考慮爲模型對象製作委託協議。

通知主要是單向的,雖然聽衆可以訪問發送通知的模型對象。可以有任何數量的相關方,其中包括控制器來來去去,但模型是持久的。

委託是雙向的,但一次只能有一個委託。通常,委託人預計會比它代表的對象長。委託對於需要額外用戶輸入的模型對象生命週期階段可能是有益的。

通知和代表可以同時使用。與UIApplication一樣,通常在發送通知之前調用委託。