mve*_*xel 13 iphone cocoa-touch core-data uitabbarcontroller cocoa-design-patterns
我有一个iPhone应用程序,它有一个MainWindow.xib,上面有一个UITabBarController,它在ViewControllers数组中有一个UINavigationController和一个自定义的UIViewController子类.UINavigationController和自定义视图控制器的根视图控制器都是从其他xib文件加载的.
该应用程序使用核心数据,堆栈在应用程序委托中初始化(根据惯例).
app委托将UITabBarController添加到窗口:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Configure and show the window
[window addSubview:[tabBarController view]];
[window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
我意识到我需要传播一个指向应用程序委托中创建的ManagedObjectContext的指针,但我不知道如何继续(甚至在这里和这里阅读关于该主题的所有好的评论):
我想我不太了解如何使用UITabBarController.
Mar*_*rra 14
理想情况下,你想传递要么NSManagedObjectContext
,NSFetchedResultsController
或有关NSManagedObject
"向下"进入UIViewController
.这允许"父母"控制"孩子"并确定孩子应该拥有什么.这样可以创建更松散耦合的设计,并允许您UIViewController
根据需要轻松地重新排列实例.它还使重用a更容易UIViewController
.
在标签视图设计中它没有什么不同.你的AppDelegate将NSManagedObjectContext
负责传递给负责创建进入的初始UIViewController
实例的人UITabBarController
.反过来,创建者在构建实例时将相关信息(NSManagedObject
,NSFetchedResultsController
和/或NSManagedObject
实例)传递给UIViewController
实例.
ger*_*ry3 11
如果要使用依赖项注入方法通过选项卡栏控制器传递托管对象上下文,则更强大的解决方案是在所有视图控制器上循环applicationDidFinishLaunching
:
for (id vc in tabBarController.viewControllers) {
[vc setManagedObjectContext:self.managedObjectContext];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12747 次 |
最近记录: |