13

Ok bit di una domanda tipo newbie.iphone tab bar controller e dati di base

Desidero utilizzare i dati di base, insieme ai controller di schede e di navigazione.

In XCode, se creo un'applicazione basata su navigazione, ho la possibilità di scegliere i dati principali. Considerando che se creo un'applicazione di barra delle linguette non ho la scelta.

Capisco che le barre delle schede visualizzino i controller della vista, quindi ha un senso. Tuttavia, dato che per impostazione predefinita si attacca il codice di base dati di base nel delegato dell'applicazione non vedo perché questo non è offerto.

Al momento sto creando i due progetti e tagliando e incollando tra di loro.

Questa omissione in XCode ti sembra strana? È una sorta di supervisione?

Grazie, Matt

risposta

6

I modelli sono progettati per essere più 'pura', qualsiasi combinazione dei modelli è lasciata come esercizio per lo sviluppatore.

Potrebbero fare un modello CoreData + Tab e Nav Controller, ma per essere corretti dovrebbero quindi fare ogni altra combinazione che potrebbe essere "ragionevole".

Combinarli da soli non è difficile, e nel centro di sviluppo ci sono app di esempio che mostrano alcune delle combinazioni all'interno di un'applicazione funzionante.

+0

Ok, questo ha senso grazie per la vostra risposta. – Sway

2

doveva fare lo stesso, penso che il modo più semplice è quello di creare un "Application Window-based", poi dichiarare un tabBarController nella vostra AppDelegate come questo:

AppDelegate.h

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

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

Nel MainWindow.xib inserisci un TabBarController e collegalo alla scheda AppDelegatesBarController.

Dopo che lo rendono visibile con l'aggiunta seguente riga

AppDelegate.m

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

Questo vi dà un set up di base e da lì si può facilmente aggiungere i controller di navigazione con il costruttore di interfaccia

+0

Grande. E 'stato davvero utile. Seguirà questo approccio da ora in poi. Cheers, Matt – Sway

+2

È molto più semplice aggiungere il controller della barra delle linguette a un progetto di Core Data piuttosto che aggiungere i dati di Core Data a un progetto di barra delle schede perché vengono creati molti metodi e variabili di Core Data nel delegato dell'app. –

+0

Anche se si aggiunge "@synthesize tabBarController;" AppDelegate.m si sbarazzerà di un paio di avvisi. –

12

Ho affrontato lo stesso problema e ho finito per creare un'app tabBar e aggiungere i dati di base in seguito.

Per farlo, ho:

  1. aggiunto il quadro CoreData al mio progetto
  2. aggiunto #import < CoreData/CoreData.h> per myproject_Prefix.pch
  3. dichiarazioni per delegare intestazione aggiunto e implementazioni getter così come create dai modelli che supportano i dati principali
  4. crea il file del modello - aggiungi il file al gruppo di risorse (o dove vuoi inserire il materiale del tuo modello) e crea un file del modello di dati.

Questo dovrebbe portarti allo stesso punto con i modelli di supporto dati principali.

Per il vostro caso specifico (dati di base con barra delle linguette), Apple hanno un buon campione app:

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

Questo mostra come passano il contesto attraverso il controller della vista rilevante definito nel file XI ter che è stata la cosa che mi ha trattenuto per un po '.

Spero che questo aiuti.

Saluti, Peter

7

È possibile aggiungere da soli è molto semplice da fare:

Per modificare le impostazioni del modello Tab Bar è necessario aprire il file seguente

Per XCode 4.2:

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

Per aggiungere nucleo opzione dati è necessario aggiungere la proprietà "com.apple.dt.unit.coreDataCocoaTouchApplication" alla chiave Antenati:

a opo aggiungendo la proprietà che dovrebbe assomigliare a questo:

<key>Ancestors</key> 

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

Per le versioni precedenti XCode

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

Per aggiungere l'opzione dati di base si deve aggiungere la proprietà "com.apple.dt.unit.coreDataCocoaTouchApplication" per gli antenati chiave:

dopo aver aggiunto la proprietà che dovrebbe assomigliare a questo:

<key>Ancestors</key> 

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

Riavvia Xcode!

Tutto dovrebbe funzionare ora: !! E hai l'opzione Dati di base visibile quando crei un nuovo progetto a schede in Xcode.

+0

hai testato se l'app che lo utilizza sta funzionando? Perché c'è qualcosa di strano nel passare managedObjectContext attraverso i controller delle schede di tabulazione – kappa

+0

Funziona come un incantesimo in Xcode 5. –

+0

funziona per me ha solo bisogno di qualche lavoro in più upvoted – makboney

Problemi correlati