将 ManagedObjectContext 传递到 UITabBarController 的视图

发布于 2024-09-28 00:55:33 字数 424 浏览 4 评论 0原文

我有一个基于实用程序模板的应用程序(您可以翻转视图以查看另一个视图)。在第一个视图上有一个登录屏幕,然后它翻转以显示 UITabBar 风格的界面。

我无法弄清楚如何将 ManagedObjectContext 从应用程序委托(创建它的位置)一直传递到每​​个选项卡栏的视图。

App Delegate 的 ManagedObjectContext 被传递到 FrontLoginViewController,后者又被传递到 BackViewTabBarViewController .. 接下来在哪里?

BackViewTabBarViewController 笔尖有一个 UITabBarController,每个选项卡都有一个 UINavigationController。

I have an app which is based on the Utility template (where you flip over the view to see another). On the first view there is a login screen, then it flips over to reveal a UITabBar style interface.

I'm having trouble working out how to pass the managedObjectContext from the App Delegate (where it is created) all the way through to each of the Tab Bar's views.

App Delegate's managedObjectContext get passed to FrontLoginViewController which gets passed to BackViewTabBarViewController .. where next?

The BackViewTabBarViewController nib has a UITabBarController with a UINavigationController for each tab.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千纸鹤 2024-10-05 00:55:33

听起来 ManagedObjectContext 是在您的 AppDelegate 中定义的。如果是这样,那么...

从您想要的任何 viewController...只需调用

MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];

then use...

appDelegate.managedObjectContext

每当您需要 ManagedObjectContext 时。将 MyApplicationDelegate 更改为您的 AppDelegate,您应该可以开始了。

Sounds like the managedObjectContext is defined in your AppDelegate. If so, then...

From whatever viewController you want... just call

MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];

Then use...

appDelegate.managedObjectContext

whenever you need the managedObjectContext. Change the MyApplicationDelegate to your AppDelegate and you should be good to go.

空城旧梦 2024-10-05 00:55:33

我也遇到了同样的问题,我将分享我的解决方案。

首先,您需要在 nib 文件的选项卡栏中引用导航控制器,确保将其连接起来。

IBOutlet UINavigationController *navigationController;

然后,按照支持文档中的建议获取控制器并向其发送 ManagedObjectContext:

SavedTableViewController *saved = (SavedTableViewController *)[navigationController topViewController];
saved.managedObjectContext = self.managedObjectContext;

Alex(来自另一篇文章)是对的,“您通常应该远离从应用程序委托获取共享对象。这使得它的行为太像全局变量,这会带来一大堆与之相关的问题。”

I've ran into this same problem, i'll share my solution.

First you need a reference to the Nav Controller in the Tab Bar in the nib file, make sure you connect it up.

IBOutlet UINavigationController *navigationController;

Then, get the Controller as recommended in the support docs and send it the managedObjectContext:

SavedTableViewController *saved = (SavedTableViewController *)[navigationController topViewController];
saved.managedObjectContext = self.managedObjectContext;

Alex (from another post) is right, "You should generally stay away from getting shared objects from the app delegate. It makes it behave too much like a global variable, and that has a whole mess of problems associated with it."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文