在我的应用程序委托中,我创建了一个NSManagedObjectContext
我想传递给我在其中启动的窗口控制器的属性applicationDidFinishLaunching:
。
这基本上是我的代码AppDelegate.m
:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSStoryboard *storyboard = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
self.setupWindowController = [storyboard instantiateControllerWithIdentifier:@"setup"];
self.setupWindowController.managedObjectContext = self.managedObjectContext;
[self.setupWindowController showWindow:self];
}
在MyWindowController.m
我有以下方法:
- (void)setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
((MyViewController *)self.contentViewController).managedObjectContext = managedObjectContext;
}
这是一种方法MyViewController.m
:
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender {
if ([segue.destinationController isKindOfClass:self.class]) {
((MyViewController *)segue.destinationController).managedObjectContext = self.managedObjectContext;
}
}
这种方法效果很好,直到我不得不从应用程序委托以编程方式启动不同的窗口。现在的问题是,prepareForSegue:sender:
在我能够设置之前调用初始视图MyWindowController.managedObjectContext
,所以它只会通过nil
以下segues。
在设置视图层次结构之前,我到底应该如何将对象从我的应用程序委托传递到初始窗口控制器?
我是否以错误的方式接近这一切?