无法模态推送包含核心数据数据的 tableView
Posted
技术标签:
【中文标题】无法模态推送包含核心数据数据的 tableView【英文标题】:Not able to modaly push tableView containing Core-Data data 【发布时间】:2012-04-19 10:48:54 【问题描述】:我已经设法在 NavigationController 中创建了一个 tableViewController(使用斯坦福大学的 CoreDataTableViewController),并通过 Core-Data 加载数据。用户可以检查一些参数,设置默认值等。它工作得很好,用户还可以将参数保存到数据库等等。
但这只是我正在构建的应用程序的一小部分。该应用程序以 TabBar 控制器开始。第一个选项卡包含一个 UIViewController,在这个视图中,我希望能够模态地对包含所有核心数据内容的 tableViewControllers 进行 segue。
我相信我在设置 AppDelegate、managedObjectContext 和其他所有内容时都非常小心。但是,显然我遗漏了一些东西,因为在尝试显示模式视图时出现以下错误:
[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance...
我一直在搜索,这表明 managedObjectContext 没有被传递。
applicationDidFinishLaunching 上的代码是这样的:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
RotationVC *rotation=[[tabBarController viewControllers] objectAtIndex:0];
rotation.managedObjectContext=self.managedObjectContext;
第一个 Tab 中包含的视图上的 prepareForSegue 是这样的:
if ([segue.identifier isEqualToString:@"SetCameraFromRotationSegue"])
CameraMakerTVC *cameraMaker = segue.destinationViewController;
cameraMaker.managedObjectContext=self.managedObjectContext;
它构建成功并且没有给出错误或警告。
谁能帮我解决这个问题?我真的很感激!
提前致谢!
【问题讨论】:
【参考方案1】:问题可能出在这里:segue 中的“destinationViewController”不是 CameraMakerTVC(我猜是表格视图控制器),而是包含它的 UINavigationController。所以当你尝试这样做时:
cameraMaker.managedObjectContext=self.managedObjectContext
事实上,您不是在 CameraMakerTVC 控制器上而是在 UINavigationController 上调用 setter。您应该尝试这样做:
UINavigationController *nc = segue.destinationViewController;
CameraMakerTVC *cameraMaker = [nc.viewControllers objectAtIndex:0];
cameraMaker.managedObjectContext=self.managedObjectContext;
【讨论】:
哦,哇!就是这样!非常感谢!既然您指出了这一点,那就说得通了。以上是关于无法模态推送包含核心数据数据的 tableView的主要内容,如果未能解决你的问题,请参考以下文章