我在向我的一个视图控制器NSManagedObjectContext
设置LibraryTrackTimeViewController
时遇到问题。我附上一个截图(我希望这不违反规则),以使其更清晰:
如您所见 - 它嵌入在NavigationController
和tabBarContoller
中。我正在为NSManagedObjectContext
中的其他viewControllers设置appDelegate
:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];
TagLibraryViewController *tagLibraryViewController = (TagLibraryViewController *)[[navigationController viewControllers] objectAtIndex:0];
tagLibraryViewController.managedObjectContext = self.managedObjectContext;
navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:1];
LibrariesViewController *librariesViewController = (LibrariesViewController *)[[navigationController viewControllers] objectAtIndex:0];
librariesViewController.managedObjectContext = self.managedObjectContext;
MapViewController *mapViewController = (MapViewController *)[[tabBarController viewControllers] objectAtIndex:2];
mapViewController.managedObjectContext = self.managedObjectContext;
return YES;
}
其他视图控制器很容易通过managedObjectContext
- 但是我无法将我如何将其发送到我的LibraryTrackTimeViewController
,因为它是嵌入的..任何帮助或建议你可以给我 - 那太棒了!有没有更好的方法将objectContexts
发送给我的视图控制器?
答案 0 :(得分:2)
如果您发现它太复杂,您可以从应用代理
公开上下文// AppDelegate.h
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
然后直接从代表处获取它:
#include "AppDelegate.h"
AppDelegate *delegate = (AppDelegate*)
[[UIApplication sharedApplication] delegate];
self.managedObjectContext = delegate.managedObjectContext;
这不是建议 - 我还建议您将上下文传递给控制器。但它是一种完全有效的设计模式,所以如果你觉得它更容易就可以使用它。