无法模态推送包含核心数据数据的 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的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 TableView 传递到 PageViewController 的包含视图

无法在 tableview Swift 中显示核心数据

关系属性的核心数据获取请求

Tableview 中的 Xcode 核心数据

iphone - 将子视图添加到窗口后无法推送模态视图?

Swift - TableView的协议代理无法正常工作 - 以模态呈现