使用 Core Data 的选项卡式应用程序,每个选项卡上都有不同的主从表视图

Posted

技术标签:

【中文标题】使用 Core Data 的选项卡式应用程序,每个选项卡上都有不同的主从表视图【英文标题】:A Tabbed application with a different Master Detail Table View on each tab, using Core Data 【发布时间】:2011-12-08 16:11:34 【问题描述】:

我希望有人可以帮助一个菜鸟。

我正在尝试创建一个使用标签作为主要导航的 iPhone/iPad 应用程序。第一个选项卡将是一种带有基本信息和反馈按钮等的主屏幕。其他选项卡(3-4 个选项卡)每个都需要显示应用程序的不同“部分”。每个部分都将显示一个表格视图和导航控制器(使用 Core Data)。这些表视图彼此无关,每个视图都使用数据库中的不同表 (sqlite)。

为了说明这一点,假设标签 1 是应用程序主页,标签 2 列出您的购物清单,标签 3 列出食谱,标签 4 列出可用的优惠券。它们都在应用程序中组合在一起,但它们来自完全不同的表格。每个选项卡上出现的每个导航控制器都是完全不同的。我使用它就像选项卡中的辅助导航一样。

所以我的问题是,有没有人有任何说明这种技术的教程?如果不是,我是否必须为每个选项卡创建不同的 fetchedResultsController?我使用选项卡式应用程序模板启动项目,然后使用主详细信息模板创建另一个虚拟项目,并将主详细信息代码和 xibs 添加到我的选项卡式项目中。所以我现在有显示主详细信息模板附带的通用时间戳实体的选项卡,但是我似乎无法让这些选项卡显示不同的数据。

另外,如何为每个表格视图/选项卡创建导航控制器?所有文档都说要在 AppDelegate 内部对其进行初始化,但是如果我把它放在那里,如何为每个选项卡获取不同的控制器?我是否在应用程序委托中声明了 3-4 个控制器,以及如何将它们分配给每个表视图?即使它是有道理的,我也没有在任何地方看到过这样的例子。 教程将不胜感激。

非常感谢您。我只是卡在这里。 :(

【问题讨论】:

【参考方案1】:

所以要开始每个选项卡(我假设您正在谈论一个 UITabBarController)将拥有它自己的 UINavigationController->UIViewController。我不知道任何关于在选项卡内使用主从细节的教程,我也没有亲自做过,但是对于你关于选项卡内导航控制器的第二个问题,你会做以下事情:

开始使用带有故事板的选项卡模板。

在您的故事板中,您可以看到它们具有两个视图控制器,并且它们被捆绑在一起。我会删除它们,因为它们不需要。

您可以从右侧拖入所需的许多 UINavigation 控制器(黄金控制器)。当你把它拖进去时,它应该会带来两个视图,控制器和根视图。

从标签栏控制器控制+拖动到导航控制器并将其连接到关系视图控制器。对所有导航控制器执行此操作

你的故事板应该看起来像这样:

您现在已经设置了所有视图结构。因此,您现在需要为它们创建所有类。正如您所提到的,您将创建一个食谱视图控制器、购物清单视图控制器......

设置空白视图以使用您刚刚创建的类。从这些类中的每一个,您都可以将视图推送到它们的导航控制器,它会将其推送到该堆栈上,如果您切换选项卡,您将从停止的地方开始。

在这些类中的每一个内部都需要一个 NSfetchedResultsController 来绑定到一个核心数据数据库(位于委托或其他类中)并控制该表。

这是我用来设置我的第一个 nsfetchedresultscontroller 的一个很棒的教程。它从头到尾贯穿整个过程。

http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller

我希望这能让你摆脱困境。如果设置上有任何不清楚的地方,请告诉我。

【讨论】:

非常感谢您。我实际上正在从事一个需要向后兼容并且不能使用故事板功能的项目,但是该教程是一个巨大的帮助。你的解释让我明白了很多。感谢您帮助一个菜鸟。

以上是关于使用 Core Data 的选项卡式应用程序,每个选项卡上都有不同的主从表视图的主要内容,如果未能解决你的问题,请参考以下文章

angularjs:选项卡式视图设计问题

带有选项卡式导航的 Cocoa-Touch 后退按钮

如何使不同的选项卡式引导表单与不同的控制器通信

使用swift在选项卡式视图中的导航栏上添加按钮

Android 选项卡式活动通过 volley 添加新片段

如何在 Xcode 上的选项卡式应用程序中添加选项卡