2012-03-25 4 views
1

Ich habe einen UITabBarController, und alle VCs in den Registerkarten verwenden das gleiche Modell (jede Registerkarte zeigt nur das Modell anders an). Wie erstelle ich dieses Modell und teile es unter den anderen VCs? Initialisiere ich es in der Landung VC (wenn der Benutzer die App öffnet) und dann an die anderen mit prepareForSegue oder etwas? Oder gibt es eine andere Möglichkeit, ein "gemeinsames" Modell/eine gemeinsame Klasse zwischen VCs in einer App zu erstellen?Wie kann ich ein einzelnes freigegebenes Modell für alle VCs in einem UITabBarController haben?

Antwort

2

Sie haben grundsätzlich drei Methoden.

1.: Verwenden Sie Ihre AppDelegate ein Modell zu speichern und darauf zuzugreifen mit:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.model 

2.:

Tutorial: http://www.galloway.me.uk/tutorials/singleton-classes/

3. Sie einen Singleton (eine gemeinsame Instanz) verwenden können, : Verwenden Sie eine Factory-Klasse, die Ihre Tableiste erstellt, teilen Sie allen Controllern dasselbe Modell mit und geben Sie es an Ihr appDelegate zurück.

Zoul machte einen großen Sample zu veranschaulichen, wie das funktioniert: https://github.com/zoul/Singletons-Suck

die 3. mein Favorit ist =)

0

Sie es in Ihrem AppDelegate als Klasse Eigenschaft initialisieren können und nennen es von überall her:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.myModel.... 
Verwandte Themen