2012-04-09 20 views
0

Immer noch versuchen, iPhone-Programmierung zu erfassen und sind auf ein Problem gestoßen. Ich habe ein NSMutableArray innerhalb einer Klasse, die den Textwert jeder Zelle speichert, auf die geklickt wurde. In einer anderen Ansicht möchte ich eine andere Tabellenansicht mit dem Array füllen, das zuvor erstellt wurde. Wie gehe ich jedoch von View2 aus auf dieses Array (was eine Eigenschaft in View1 ist).Aufruf eines Arrays aus einer anderen Klasse

Wird das Array immer noch mit den Strings gefüllt, wenn ich zu einer anderen Ansicht gehe? Oder erfordert dies eine sqLite DB oder etwas in dieser Richtung, um Persistenz zu erhalten?

Ich habe versucht, von Ansicht1 weiterer NSMutableArray mit dem Inhalt des Arrays initialisiert wird, aber dies scheint nicht richtig zu sein:

//View2.h 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSMutableArray *savedExercise = [Create workout]; 
} 

Jede Hilfe sehr geschätzt würde.

Antwort

0

Wenn Sie view2 von view1 erstellen, ist ein gemeinsames Muster eine andere Methode init zu erstellen, so dass, wenn Sie Ansicht 2 erstellen, geben Sie

view2 = [[View2 alloc] initWithData:data]; 

wo Daten ist Ihr Array nennen würde.

In View2, würden Sie

-(id)initWithData:(NSArray*)_data{ 
    self = [super init]; 
    if(self){ 
     dataProperty = _data; 
    } 
    return self; 
} 

, wo dataProperty eine Eigenschaft auf View2 ist.

0

Sie sollten Getter-Methoden (und bei Bedarf auch Setter) für die Instanzvariable "workout" in View1 erstellen. Um dies zu tun, können Sie die @property-Funktionalität von Objective-C verwenden.

Anschließend auf die Instanz von View1 in View2 zugreifen, um den Zeiger auf workout zu erhalten.

Eine bessere Methode ist das Erstellen eines Singleton "Data Manager" und den Zugriff über eine sharedInstance-Methode (wie wir im Chat besprochen haben). Ihre Daten werden dann vollständig von dieser Instanz verwaltet und können jederzeit in jedem Teil Ihrer App abgerufen werden, indem Sie mit sharedInstance "sprechen".

+0

Ich war unter dem Eindruck Getter und Setter wurden vor geschrieben, wenn Sie das Array synthetisiert? Wenn Sie sagen, dass Sie View1 in View2 verwenden, sprechen Sie darüber, es zu importieren? – TopChef

+0

Ja genau: Setter- und Getter-Methoden werden festgelegt, indem "Workout" als Eigenschaft deklariert und anschließend synthetisiert wird. Durch den Zugriff auf View1 in View2 wollte ich den Zeiger darauf bekommen. Es hängt davon ab, wie Sie die Ansichtsstruktur aufgebaut haben. – tamasgal

+0

Wie lautet die Syntax zum Aufrufen einer Getter-Methode in einer anderen Klasse/Ansicht? – TopChef

0

Wenn Ihre App iOS 5-spezifisch ist und Sie von View1 zu View2 wechseln, können Sie segues und prepareForSegue verwenden, um die Daten zu übergeben.

Sie würden die Segue mit performSegueWithIdentifier:sender: rufen und dann in Ihrem prepareForSegue Methode könnte man so etwas tun: [segue.destinationViewController setArray:###pass array here###] Sie müssen nur eine Eigenschaft in Header Ihre View2Controller der, der einen Setter namens setArray hat (oder was auch immer Sie wollen, es zu nennen).

Verwandte Themen