【问题标题】:iphone tab bar controller and core dataiphone标签栏控制器和核心数据
【发布时间】:2010-11-24 20:19:07
【问题描述】:

好吧,一个新手类型的问题。

我想将 Core Data 与 Tab 和 Navigation 控制器一起使用。

在 XCode 中,如果我创建一个基于导航的应用程序,我可以选择 Core Data。而如果我创建一个选项卡栏应用程序,我没有选择。

我知道选项卡栏显示视图控制器,所以它有点道理。但是,鉴于默认情况下它将基本核心数据代码粘贴在应用程序委托中,我不明白为什么不提供此功能。

目前我正在创建两个项目并在它们之间进行剪切和粘贴。

您觉得 XCode 中的这种遗漏很奇怪吗?这是某种疏忽吗?

谢谢, 马特

【问题讨论】:

    标签: iphone xcode core-data uinavigationcontroller tabbarcontroller


    【解决方案1】:

    模板被设计得更“纯粹”,模板的任何组合都留给开发者练习。

    他们可以做一个 CoreData + Tab 和 Nav Controller 模板,但公平地说,他们必须做所有其他可能“合理”的组合。

    自行组合它们并不难,开发中心中有一些示例应用程序显示了工作应用程序中的一些组合。

    【讨论】:

      【解决方案2】:

      必须这样做,我认为最简单的方法是创建一个“基于窗口的应用程序”,然后在您的 AppDelegate 中声明一个 tabBarController,如下所示:

      AppDelegate.h

      @interface CommUnityAppDelegate : NSObject <UIApplicationDelegate> {
      UITabBarController *tabBarController; // add this
      UIWindow *window;
      }
      
      // and this
      @property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
      

      在您的 MainWindow.xib 中插入一个 TabBarController 并将其与您的 AppDelegates tabBarController 连接。

      然后通过添加以下行使其可见

      AppDelegate.m

      - (void)applicationDidFinishLaunching:(UIApplication *)application {
        [window addSubview:tabBarController.view]; // add this
        [window makeKeyAndVisible];
      }
      

      这为您提供了基本设置,您可以从那里轻松地使用界面构建器添加导航控制器

      【讨论】:

      • 太棒了。那真的很有用。从现在开始将遵循这种方法。干杯,马特
      • 将标签栏控制器添加到 Core Data 项目比将 Core Data 内容添加到标签栏项目要容易得多,因为在应用程序委托中创建了许多 Core Data 方法和变量给你。
      • 如果你添加“@synthesize tabBarController;”到 AppDelegate.m 它将摆脱一些警告。
      【解决方案3】:

      我遇到了同样的问题,最终创建了一个 tabBar 应用程序并稍后添加核心数据。

      为此,我已经:

      1. 将 coredata 框架添加到我的项目中
      2. 将#import 添加到myproject_Prefix.pch
      3. 添加声明以委托 header 和 getter 实现,就像由支持核心数据的模板创建的那样
      4. 创建模型文件 - 将文件添加到资源组(或您想要放置模型内容的任何位置)并创建数据模型文件。

      这应该让您达到与核心数据支持模板相同的水平。

      对于您的具体情况(带有标签栏的核心数据),Apple 有一个很好的示例应用程序:

      http://developer.apple.com/iphone/library/samplecode/iPhoneCoreDataRecipes/index.html

      这显示了它们如何将上下文传递给定义的相关视图控制器 在 xib 文件中,这让我耽搁了一段时间。

      希望这会有所帮助。

      干杯, 彼得

      【讨论】:

        【解决方案4】:

        你可以自己添加,很简单:

        要修改标签栏模板设置,您必须打开以下文件

        对于 XCode 4.2:

        /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/Tabbed Application.xctemplate/TemplateInfo.plist
        

        要添加核心数据选项,您必须将属性“com.apple.dt.unit.coreDataCocoaTouchApplication”添加到祖先键:

        添加属性后应该如下所示:

        <key>Ancestors</key>
        
        <array>
        <string>com.apple.dt.unit.storyboardApplication</string>
        <string>com.apple.dt.unit.coreDataCocoaTouchApplication</string>
        </array>
        

        对于以前的 XCode 版本

        /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/Tab Bar Application.xctemplate/TemplateInfo.plist
        

        要添加核心数据选项,您必须将属性“com.apple.dt.unit.coreDataCocoaTouchApplication”添加到祖先键:

        添加属性后应该如下所示:

        <key>Ancestors</key>
        
        <array>
        <string>com.apple.dt.unit.cocoaTouchFamiliedApplication</string>
        <string>com.apple.dt.unit.coreDataCocoaTouchApplication</string>
        </array>
        

        重启 Xcode!

        现在一切都应该正常了:!!当您在 Xcode 中创建新的选项卡式项目时,您会看到 Core Data 选项。

        【讨论】:

        • 您是否测试过使用它的应用程序是否正常工作?因为在标签栏视图控制器之间传递 managedObjectContext 有点奇怪
        猜你喜欢
        • 1970-01-01
        • 2011-08-28
        • 2010-11-22
        • 2018-10-12
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2023-03-07
        相关资源
        最近更新 更多