2011-08-04 53 views
0

我有一個視圖控制器,然後有一個按鈕傳遞給選項菜單。將數據傳回以前分配的UIViewController

當設置選項時,它們需要返回到先前分配的視圖控制器。

如果沒有對象的「alloc和init another」實例,這可能如何?

回答

0

當您的init您的選項viewController,傳遞給它的父對象的引用。

I.E.

[[OptionViewController alloc] initWith...: parent:]; 

使用@property或方法或諸如此類到父調用以將數據傳遞迴。

+0

您也可以傳遞父對象有權訪問的某個信息持有者對象的引用,並且可以在其「viewWillAppear:'回調中引用它。 –

+0

好,所以我分配與父母的對象。當然,該分配對象的父對象將是分配它的對象(self) – MrPink

+0

正確。所以:'[[OptionViewController alloc] initWith ...:parent:self];' –

2

您可以通過使用委託協議來實現此目的。第一個視圖控制器應該成爲第二個視圖控制器的委託,然後你可以在選擇完成後在你的第一個視圖控制器中調用這個委託方法。

您可以在objective-c中查找google的代表實現。它非常簡單。添加一個

@protocol <delegatename> 
<declare delegate method> 
@end 

在第二個視圖控制器中創建一個用於分配委託的成員變量。並在實現委託的類中定義方法。

+0

儘管其他答案看起來可能更簡單,但如果您真的想遵循SDK的原則,這就是*方法。 – Cyrille

+0

好的自定義委派對我來說是全新的。我花了最後一個小時試圖讓我的頭圍繞它....你能拋出幾行代碼簡單地解釋什麼在說什麼......因爲這是我變得完全困惑的地方。 – MrPink

+0

我剛剛寫了一篇博客文章。但是,請閱讀www.iprav.in –

0

你可以使用共享單身? http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

或保存參數和NSUserDefaults的在你的第一個視圖 - 控制

或其他一些臨時存儲讀取它們放回作爲您的appdelegate

這樣我以前使用的所有三種上述兩種方法。

+0

但是,如果父控制器一次可以在應用程序中存在多個堆棧,則全局(如單例或使用AppDelegate)需要從代碼中重構。 –

相關問題