13

Ok pytanie typu nowicjusz.Sterownik paska narzędzi iPhone i podstawowe dane

Chcę używać danych podstawowych wraz z kontrolkami Tab i nawigacyjne.

W XCode, jeśli utworzę aplikację opartą na nawigacji, otrzymam opcję wyboru danych podstawowych. Natomiast jeśli utworzę aplikację Tab Bar, nie otrzymam wyboru.

Rozumiem, że pasek tabulacji wyświetla kontrolery widoku, więc ma to sens. Jednak biorąc pod uwagę, że domyślnie jest to kod podstawowy Core Data w delegacie aplikacji Nie rozumiem, dlaczego nie jest to oferowane.

W tej chwili tworzę dwa projekty i wycinam i wklejam między nimi.

Czy to zaniedbanie w XCode wydaje ci się dziwne? Czy to jakieś niedopatrzenie?

Dzięki Matt

Odpowiedz

6

Szablony są zaprojektowane, aby być bardziej „czysty”, dowolna kombinacja szablonów pozostawiamy jako ćwiczenie dla dewelopera.

Mogli zrobić CoreData + Tab i Nav Controller szablon, ale żeby być w porządku, że oni mają robić każdą inną kombinację, która może być „rozsądne”.

Łączenie ich osobiście nie jest takie trudne, aw centrum deweloperów są przykładowe aplikacje, które pokazują niektóre kombinacje w działającej aplikacji.

+0

OK, to ma sens dzięki Twojej odpowiedzi. – Sway

2

Gdyby zrobić to samo, myślę, że najłatwiejszym sposobem jest stworzenie "okna aplikacji opartych na", a następnie zadeklarować TabBarController w AppDelegate jak ten:

AppDelegate.h

@interface CommUnityAppDelegate : NSObject <UIApplicationDelegate> { 
UITabBarController *tabBarController; // add this 
UIWindow *window; 
} 

// and this 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 

W MainWindow.xib wstaw TabBarController i połącz go z zakładką AppDelegatesBarController.

Po tym uczynić widocznym, dodając następujący wiersz

AppDelegate.m

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

Daje to podstawowy zestaw w górę i stamtąd można łatwo dodać kontrolery nawigacyjne z interfejsem budowniczego

+0

Świetnie. To było naprawdę przydatne. Podejmie to podejście od teraz. Pozdrawiam, Matt – Sway

+2

O wiele łatwiej jest dodać kontroler paska kart do projektu Core Data, niż dodać elementy Core Data do projektu paska kart, ponieważ wiele metod i zmiennych danych podstawowych w delegatach aplikacji jest tworzonych dla Ciebie. –

+0

Również jeśli dodasz "@synthesize tabBarController;" do AppDelegate.m pozbyć się kilku ostrzeżeń. –

12

Stawiłem czoła temu samemu problemowi i skończyło się na stworzeniu aplikacji tabBar i dodaniu późniejszych podstawowych danych.

Aby to zrobić, mam:

  1. dodał CoreData ramy do mojego projektu
  2. dodanej #import < CoreData/CoreData.h> do myproject_Prefix.pch
  3. dodany deklaracji delegować nagłówek i implementacje getter tak stworzone przez szablonów, które obsługują podstawowe dane
  4. utworzyć plik modelu - dodanie pliku do grupy zasobów (lub gdziekolwiek chcesz umieścić swój model rzeczy) i utworzyć plik modelu danych.

Powinno to doprowadzić do tego samego punktu, w którym można uzyskać podstawowe szablony obsługujące dane.

dla konkretnego przypadku (podstawowe dane o im zakładkami), Apple mają dobrą aplikację próbki:

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

To pokazuje, w jaki sposób przekazać kontekst aż do właściwego kontrolera widoku zdefiniowanego w pliku XIB to było coś, co trzymało mnie przez chwilę.

Mam nadzieję, że to pomoże.

Cheers, Peter

7

Możesz dodać to sam jest to bardzo proste do zrobienia:

Aby zmodyfikować ustawienia szablonu Tab Bar trzeba otworzyć następujący plik

Dla XCode 4.2:

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

Aby dodać rdzeń opcja danych musisz dodać właściwość "com.apple.dt.unit.coreDataCocoaTouchApplication" do klucza Przodkowie:

a fter dodając właściwość powinna wyglądać następująco:

<key>Ancestors</key> 

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

dla poprzednich wersji Xcode

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

Aby dodać opcję podstawowych danych trzeba dodać właściwość „com.apple.dt.unit.coreDataCocoaTouchApplication” do Przodków kluczowych:

po dodaniu właściwość powinna wyglądać następująco:

<key>Ancestors</key> 

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

Uruchom ponownie Xcode!

Wszystko powinno teraz działać dobrze: !! I masz opcję Core Data widoczną po utworzeniu nowego projektu z zakładkami w Xcode.

+0

sprawdziłeś, czy działa aplikacja korzystająca z niego? Ponieważ jest coś dziwnego w przekazywaniu managedObjectContext na kontrolkach widoku paska tabulatorów – kappa

+0

Działa to jak uroku w Xcode 5. –

+0

działa tylko dla mnie potrzebuję wykonać dodatkową pracę – makboney

Powiązane problemy