13

Ok бит типа типа новичков.iphone tab bar контроллер и данные ядра

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

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

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

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

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

Спасибо, Matt

ответ

6

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

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

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

+0

Хорошо, это имеет смысл для вашего ответа. – Sway

2

бы сделать то же самое, я думаю, что самый простой способ для создания «окна на основе приложения», а затем объявить 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]; 
} 

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

+0

Отлично. Это было действительно полезно. Отныне будет следовать этому подходу. Cheers, Matt – Sway

+2

Гораздо проще добавить контроллер панели вкладок в проект Core Data, чем добавить материал Core Data в проект панели вкладок, потому что для вас создано много методов и переменных Core Data в делегате приложения. –

+0

Также, если вы добавите «@synthesize tabBarController;» к AppDelegate.m он избавится от нескольких предупреждений. –

12

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

Чтобы сделать это, у меня есть:

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

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

Для вашего конкретного случая (основные данные с TabBar), Apple есть хороший пример приложение:

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

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

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

Приветствия, Peter

7

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

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

Для XCode 4.2:

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

Чтобы добавить ядро данных необходимо добавить свойство "com.apple.dt.unit.coreDataCocoaTouchApplication" Ключу предков:

a осле добавить свойство должно выглядеть следующим образом:

<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.

+0

Вы тестировали, работает ли приложение, использующее его? Потому что есть что-то странное в управлении managedObjectContext через контроллеры просмотра панели табуляции. – kappa

+0

Это работает как шарм в Xcode 5. –

+0

работает только для меня, требуется только дополнительная работа. – makboney