2009-09-04 66 views

回答

1

很多時候,當我發現我必須做這樣的事情時,我發現我可以重新設計解決方案,並且它的需求消失。傑伊的法則:「如果太難了,你可能做錯了。」

0

您將不得不在視圖控制器界面中定義屬性,然後只要您有第二個視圖控制器中的視圖控制器的引用,您應該可以像UILabel的文本那樣訪問它。

+0

謝謝丹尼爾。你的意思是什麼?我如何將第一個視圖控制器的引用傳遞給第二個控制器?順便說一句,我使用pushViewController去下一個視圖控制器。 – domlao 2009-09-04 15:40:51

1

可以訪問另一個視圖控制器的UILabel,但不可以。它會導致你很難理解錯誤。當內存不足時,任何IBOutlet都可能在令人驚訝的時候變爲零。你不應該直接混淆另一個對象的UI元素。

訪問數據(模型)對象的初始想法是正確的,但通常情況下,您最好使用相同的模型對象初始化兩個視圖控制器。例如,假設你有一個狀態消息,你想在兩個不同的視圖控制器中顯示兩個不同的UILabel。而不是讓一個視圖控制器詢問另一個視圖控制器的數據,最好是有一個像兩個視圖都有指針的「狀態」模型類。每當它發生變化時,他們都會改變他們的UILabel。

更好的辦法是發佈一個通知(StatusDidChangeNotification),讓所有關心它的人觀察它並適當地更新它們的UI。

你想保持UI元素非常鬆散地耦合在Cocoa中。否則,當你做出看起來像是一個小UI變化的時候,你會發現難以修復的錯誤。

0

viewWillAppear:只有當您使用像presentModalViewController:animated:或pushViewController:animated:這樣的內置視圖控制器轉換時才被框架調用。在其他情況下,你必須調用viewWill/Did(Dis)出現:你自己。

相關問題