我有一个使用 Core Data 的应用程序,我在应用程序委托(delegate)中创建了一个 managedObjectContext
。
我想将 managedObjectContext
传递到我的 Storyboard上的两个 View Controller ,以便它们使用相同的 managedObjectContext
来保存和获取。
我可以访问第一个 View Controller :
self.window.rootViewController
但是我想访问的第二个 View Controller 是在第一个 View Controller 的 segue 之后,并且没有从它返回任何引用。
我试过:
instantiateViewControllerWithIdentifier:
但这会创建一个新的 View 实例,而不是让我访问在 segue 之后出现的第二个 View Controller 。
所以我的问题是,如何访问第二个 View Controller ?
或者(因为我对此很陌生)是否有更好的方法在 View Controller 之间管理/传递数据?
提前致谢。
最佳答案
Or (as I'm very new to this) is there a better way to be managing/passing the data between the view controllers?
这取决于您要传递的数据。在这种情况下,您希望让您的 View Controller 访问您的 Core Data 托管对象上下文。因为这是您在应用程序的整个生命周期中都需要的东西,所以让您的 View Controller 通过您的应用程序委托(delegate)访问它会更好。
您可以通过 [[UIApplication sharedApplication] delegate]
执行此操作 - 但是,您可能需要对其进行类型转换以避免编译器警告,或者您可能希望创建一个返回托管对象的宏上下文以节省您的时间并使您的代码更具可读性。
如果您在创建项目时告诉 XCode 您想要使用 Core Data,您应该已经在应用程序委托(delegate)中拥有检索对象上下文的方法。如果没有,您将需要创建它们。
要创建一个宏来避免每次需要访问托管对象上下文时都必须写出 [[UIApplication sharedApplication] delegate]
,请查看此答案:Short hand for [[UIApplication sharedApplication] delegate]?
关于iphone - iOS - 从 appDelegate 访问 Storyboard上的 viewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788585/