【问题标题】:Passing managedobjectContext to tabbarcontroller with navigation controllers in modal view在模态视图中使用导航控制器将 managedobjectContext 传递给 tabbarcontroller
【发布时间】:2013-05-09 15:51:14
【问题描述】:

对于一个小应用程序,我有一个登录屏幕。在 Auth 上,展示了一个带有两个视图(一个带有导航控制器)的选项卡栏控制器。我正在关注本教程。它使用核心数据。 http://maybelost.com/2011/12/tutorial-storyboard-app-with-core-data/

本教程称为 segue。但我想使用 presentModalViewController。它可以工作,除了我想知道如何将 managedObjectContext 传递给标签栏控制器内导航控件内的视图。

我读了这个Passing ManagedObjectContext to view controllers using storyboards with a root UITabBarController,但是第二个答案下的 cmets 说这不是正确的方法。

谁能告诉我正确的做法?我想知道如何在标签栏控制器中获取对视图的引用,以便我可以为该视图设置 managedobjectcontext。

谢谢

编辑 在 appDelegate.h 中:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
   @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

我的 appDelegate.m :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    LoginViewController *rootView = (LoginViewController *)self.window.rootViewController;
    rootView.managedObjectContext = self.managedObjectContext;
}

【问题讨论】:

    标签: ios uitabbarcontroller managedobjectcontext


    【解决方案1】:

    实际上,我倾向于从您所在视图的 tabBarController 中获取上下文。例如,在您的 viewWillAppear 中,从标签栏中的视图中创建一个 self.tabBarController 实例并将您的视图上下文设置为那个上下文。这样,您只需将上下文传递给 tabBar,每个视图都可以引用该 tabBar 的上下文。

    类似的东西。

    MainTabBar *parentTabBarController = (MyTabBar *)self.tabBarController;
    self.managedObjectContext = parentTabBarController.managedObjectContext;
    

    【讨论】:

    • 和从appDelegate访问不一样吗?
    • 你也可以参考AppDelegate,是的。这个选择由你。一般的做法是通过
    • 是的,我也喜欢通过。我更新了问题。让我困惑的是:rootView目前是loginviewcontroller的rootView,tabBar还没有。您能告诉我如何修改您的答案,以便在 Auth(即出现 tabBar 时)之后,为第一个选项卡的导航控制器内的视图设置 MOC?
    • 您是否使用不同的上下文?如果没有,您可以在呈现 tabBar 视图时传递 moc,因为它只不过是对 appDelegate 中 moc 的引用。如果您要传递给导航控制器,您只需引用 viewControllers 数组,如 UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourViewController)];
    • 正确。但是你能在展示标签栏时展示如何传递 moc 吗?假设我在 loginViewController 中,它没有导航栏或标签栏。在认证之后,我想在 tabBar tab1 的 view1 中设置 MOC。如何在模态呈现的视图中调用访问此视图控制器?我不能从 loginVC 中使用 self 可以吗?对不起,如果这是一个菜鸟 qn。努力掌握基础知识。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多