2009-04-02 11 views
2

Nehmen Sie das folgende Beispiel ..iphone-sdk, die gemeinsame Nutzung von Daten zwischen mehreren Ansichten

Ein einzelner TabBarController schaltet zwischen zwei Ansichten, behandelt jeweils von einem eigenen View-Controller (sagen wir mal viewController1, viewController2).

Ich habe eine Klasse namens Widget, die die Eigenschaft 'name' hat.

So habe ich Code in View1, die den Inhalt eines Textfelds lesen und die 'Name' Eigenschaft meines Widget-Objekts festlegen.

Ich möchte Code in View2 haben, um die Eigenschaft 'name' des Widget-Objekts zu lesen und irgendwo anzuzeigen.

1. Wo würde ich eine Instanz meiner Widget-Klasse deklarieren? in der tabBarController?

2. Wenn ja, wie würde ich auf diese Instanz in meinen anderen zwei Viewcontrollern zugreifen?

Vielen Dank im Voraus!

Antwort

6

Sie können Ihre Widget-Klasse als eine Eigenschaft auf den Anwendungsdelegaten setzen. Dann

@interface youAppDelegate : NSObject <UIApplicationDelegate> { 
    Widget *myWidget; 
} 

@property (readonly) Widget *myWidget; 

@end 

, instanziiert es auf die Meldung „applicationDidFinishLaunching“ von Delegierten Ihrer Anwendung.

Sobald Sie das getan haben, können Sie mywidget von überall wie dies im Projekt zugreifen:

youAppDelegate *ad = (youAppDelegate*)[UIApplication sharedApplication].delegate; 
Widget *w = [ad myWidget]; 

können Dieser Code perfekt an viewController1, viewController2 kompiliert und ausgeführt werden oder sogar auf dem TabBarController.

+0

das hat nicht funktioniert für mich :( meine app abgestürzt. –

+0

funktioniert perfekt! Danke. – konradowy

Verwandte Themen