我有一個視圖控制器,然後有一個按鈕傳遞給選項菜單。將數據傳回以前分配的UIViewController
當設置選項時,它們需要返回到先前分配的視圖控制器。
如果沒有對象的「alloc和init another」實例,這可能如何?
我有一個視圖控制器,然後有一個按鈕傳遞給選項菜單。將數據傳回以前分配的UIViewController
當設置選項時,它們需要返回到先前分配的視圖控制器。
如果沒有對象的「alloc和init another」實例,這可能如何?
當您的init
您的選項viewController,傳遞給它的父對象的引用。
I.E.
[[OptionViewController alloc] initWith...: parent:];
使用@property
或方法或諸如此類到父調用以將數據傳遞迴。
您可以通過使用委託協議來實現此目的。第一個視圖控制器應該成爲第二個視圖控制器的委託,然後你可以在選擇完成後在你的第一個視圖控制器中調用這個委託方法。
您可以在objective-c中查找google的代表實現。它非常簡單。添加一個
@protocol <delegatename>
<declare delegate method>
@end
在第二個視圖控制器中創建一個用於分配委託的成員變量。並在實現委託的類中定義方法。
你可以使用共享單身? http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
或保存參數和NSUserDefaults的在你的第一個視圖 - 控制
或其他一些臨時存儲讀取它們放回作爲您的appdelegate
這樣我以前使用的所有三種上述兩種方法。
但是,如果父控制器一次可以在應用程序中存在多個堆棧,則全局(如單例或使用AppDelegate)需要從代碼中重構。 –
您也可以傳遞父對象有權訪問的某個信息持有者對象的引用,並且可以在其「viewWillAppear:'回調中引用它。 –
好,所以我分配與父母的對象。當然,該分配對象的父對象將是分配它的對象(self) – MrPink
正確。所以:'[[OptionViewController alloc] initWith ...:parent:self];' –