2014-10-08 20 views
0

我有一個簡單的程序,單擊窗口上的按鈕觸發AppDelegate中的IBAction,並向Context添加一個新的managedObject - 這裏沒有任何問題,所有工作都應該如此。在控制器中使用MoC而不是AppDelegate

我遇到的問題是當我創建一個MainController來控制窗口 - 我該怎麼做同樣的事情?我所做的一個解決方案是在MainController中實例化AppDelegate實例,將窗口上的按鈕鏈接到調用AppDelegate add方法的MainController中的IBAction。這有效,但不知道這是否是最好的方法。

任何想法或建議,將不勝感激。

回答

0

爲什麼不通過managedObjectContextAppDelegate到您的MainController。 在AppDelegate中方法

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

MainController.

鏈接的button on the window to this IBAction聲明IBAction(which adds the object)

這就是我所做的。

+0

聽起來不錯,我怎麼打發managedObjectContext沒有在MainController創造AppDelegate中的一個實例? – littleDrummerBoy 2014-10-08 19:56:01

+0

你爲什麼要在你的MainController中創建一個AppDelegate的實例。爲什麼不在你的mainController和 - (void)applicationDidFinishLaunching中聲明一個managedObjectContext屬性:(NSNotification *)aNotification當你實例化你的maincontroller時,使用App Delegate的managedOBjectContext屬性設置屬性managedObjectContext屬性,這個屬性又將managedObjectContext的引用傳遞給你的maincontroller並且您可以保留在那裏添加/刪除對象的所有邏輯。 – 2014-10-08 19:56:54

+0

我創建了一個實例,所以我可以訪問MoC - 這是我能想到的唯一方法。 – littleDrummerBoy 2014-10-08 19:58:57

0

校正您的解決方案:你可以傳遞的appDelegate用簡單的代碼,任何控制器沒有做任何的屬性等:

#import "YOURAppDelegate.h" 

YOURAppDelegate *appDelegate = (YOURAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[appDelegate yourMethod]; 
相關問題