Контроллер панели iphone и основные данные

Убейте немного нового типа.

Я хочу использовать Core Data вместе с Tab и навигационными контроллерами.

В XCode, если я создаю приложение на основе навигации, я получаю возможность выбрать Core Data. Если я создаю приложение панели вкладок, я не получаю выбор.

Я понимаю, что TabBars отображает контроллеры представлений, поэтому это имеет смысл. Однако, учитывая, что по умолчанию он вставляет основной код Core Data в делегат приложения, я не понимаю, почему это не предлагается.

В настоящий момент я создаю два проекта, вырезая их и вставляя между ними.

Неужели это упущение в XCode кажется вам странным? Это какой-то надзор?

Спасибо, Matt

Ответ 1

Шаблоны разработаны, чтобы быть более "чистыми", любая комбинация шаблонов остается как упражнение для разработчика.

Они могли бы использовать шаблон CoreData + Tab и Nav Controller, но, честно говоря, они должны были делать любую другую комбинацию, которая может быть "разумной".

Сочетание их самих не так сложно, и там пример приложений в центре dev, которые показывают некоторые из комбинаций в рабочем приложении.

Ответ 2

Я столкнулся с той же проблемой и в итоге создал приложение tabBar и добавил материал основных данных позже.

Для этого у меня есть:

  • добавлена ​​структура coredata в мой проект
  • добавлен #import < CoreData/CoreData.h > в myproject_Prefix.pch
  • добавлены декларации для делегирования реализаций заголовков и геттеров, как это было создано шаблонами, поддерживающими основные данные
  • создать файл модели - добавить файл в группу ресурсов (или где бы вы не захотели добавить свои материалы модели) и создать файл модели данных.

Это должно привести вас к той же точке, в которой вы находитесь, с базовыми данными, поддерживающими шаблоны.

В вашем конкретном случае (основные данные с табуляцией) у Apple есть хорошее примерное приложение:

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

Это показывает, как они передают контекст через соответствующий контроллер вида, определенный в файле xib, который был тем, что удерживало меня на некоторое время.

Надеюсь, что это поможет.

Cheers, Питер

Ответ 3

Вы можете добавить его очень просто:

Чтобы изменить настройки шаблона вкладки, вам необходимо открыть следующий файл

Для 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.

Ответ 5

Придется сделать то же самое, я думаю, что самый простой способ - создать "Window-based Application", а затем объявить tabBarController в AppDelegate следующим образом:

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];
}

Это дает вам базовую настройку, и оттуда вы можете легко добавить контроллеры навигации с помощью построителя интерфейсов