Ios7 将MasterDetail模板嵌入选项卡栏中

Ios7 将MasterDetail模板嵌入选项卡栏中,ios7,uitabbarcontroller,Ios7,Uitabbarcontroller,好的,我正在尝试将使用MasterDetail模板创建的所有应用程序嵌入到选项卡控制器中 我得到一个错误,因为应用程序委托将上下文放置在俯视图控制器或类似的东西上,我不确定将其重定向到哪里 现在,我搜索了一下,发现了这个: 但这并不是特别有用,因为解决方案只会产生更多的错误 UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; MasterV

好的,我正在尝试将使用MasterDetail模板创建的所有应用程序嵌入到选项卡控制器中

我得到一个错误,因为应用程序委托将上下文放置在俯视图控制器或类似的东西上,我不确定将其重定向到哪里

现在,我搜索了一下,发现了这个:

但这并不是特别有用,因为解决方案只会产生更多的错误

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
错误日志:

2013-11-07 07:47:01.217 RoslynCAD[4491:70b] -[UITabBarController topViewController]: unrecognized selector sent to instance 0x9d72fe0
2013-11-07 07:47:01.220 RoslynCAD[4491:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController topViewController]: unrecognized selector sent to instance 0x9d72fe0'
*** First throw call stack:
(
    0   CoreFoundation                      0x01cf75e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x01a7a8b6 objc_exception_throw + 44
    2   CoreFoundation                      0x01d94903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x01ce790b ___forwarding___ + 1019
    4   CoreFoundation                      0x01ce74ee _CF_forwarding_prep_0 + 14
    5   RoslynCAD                           0x0000b9f6 -[AppDelegate application:didFinishLaunchingWithOptions:] + 278
    6   UIKit                               0x007e2355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309
    7   UIKit                               0x007e2b95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536
    8   UIKit                               0x007e73a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
    9   UIKit                               0x007fb87c -[UIApplication handleEvent:withNewEvent:] + 3447
    10  UIKit                               0x007fbde9 -[UIApplication sendEvent:] + 85
    11  UIKit                               0x007e9025 _UIApplicationHandleEvent + 736
    12  GraphicsServices                    0x0262e2f6 _PurpleEventCallback + 776
    13  GraphicsServices                    0x0262de01 PurpleEventCallback + 46
    14  CoreFoundation                      0x01c72d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    15  CoreFoundation                      0x01c72a9b __CFRunLoopDoSource1 + 523
    16  CoreFoundation                      0x01c9d77c __CFRunLoopRun + 2156
    17  CoreFoundation                      0x01c9cac3 CFRunLoopRunSpecific + 467
    18  CoreFoundation                      0x01c9c8db CFRunLoopRunInMode + 123
    19  UIKit                               0x007e6add -[UIApplication _run] + 840
    20  UIKit                               0x007e8d3b UIApplicationMain + 1225
    21  RoslynCAD                           0x000147ed main + 141
    22  libdyld.dylib                       0x0308370d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

更新: 我已经编辑了我的代码:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;

MasterViewController *controller = (MasterViewController *)[tabController.viewControllers objectAtIndex:0];
controller.managedObjectContext = self.managedObjectContext;
我现在得到了这个错误

2013-11-10 00:37:03.455 RoslynCAD[6783:70b] -[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x9e54c40
(lldb)

错误很明显。您正在这样做:

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
错误来自第二行。错误告诉您,
navigationController
实际上是一个
UIAbbarController
,而不是
UINavigationController

你想要:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
// Get what you need from the tab controller

错误很明显。您正在这样做:

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
错误来自第二行。错误告诉您,
navigationController
实际上是一个
UIAbbarController
,而不是
UINavigationController

你想要:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
// Get what you need from the tab controller

谢谢,我现在面临的是
2013-11-10 00:37:03.455 RoslynCAD[6783:70b]-[UINavigationController setManagedObjectContext:]:执行以下操作后发送到实例0x9e54c40(lldb)
的未识别选择器:
UITabBarController*tabController=(UITabBarController*)self.window.rootViewController;MasterViewController*控制器=(MasterViewController*)[tabController.ViewController对象索引:0];controller.managedObjectContext=self.managedObjectContext
选项卡包含一个
UINavigationController
,它反过来又包含您的
MasterViewController
。谢谢您,我现在面临的是
2013-11-10 00:37:03.455 RoslynCAD[6783:70b]-[UINavigationController setManagedObjectContext:]:无法识别的选择器发送到实例0x9E54C440(lldb)
执行后:
UITabBarController*tabController=(UITabBarController*)self.window.rootViewController;MasterViewController*控制器=(MasterViewController*)[tabController.ViewController对象索引:0];controller.managedObjectContext=self.managedObjectContext该选项卡包含一个
UINavigationController
,它依次包含您的
MasterViewController