iOS - Übergabe der Variablen an den Anzeigecontroller

Ich habe eine Ansicht mit einem Ansichtscontroller und wenn ich diese Ansicht auf dem Bildschirm zeige, möchte ich in der Lage sein, Variablen von der aufrufenden Klasse an sie zu übergeben, damit ich die Werte von Beschriftungen usw. festlegen kann.

Zuerst habe ich versucht, eine Eigenschaft für eine der Beschriftungen zu erstellen und diese von der aufrufenden Klasse aufzurufen. Zum Beispiel:

SetTeamsViewController *vc = [[SetTeamsViewController alloc] init];
vc.myLabel.text = self.teamCount;
[self presentModalViewController:vc animated:YES];
[vc release];

Dies hat jedoch nicht funktioniert. Also habe ich versucht, einen Komfort-Initialisierer zu erstellen.

SetTeamsViewController *vc = [[SetTeamsViewController alloc] initWithTeamCount:self.teamCount];

Und dann in derSetTeamsViewController ich hatte

- (id)initWithTeamCount:(int)teamCount {
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        // Custom initialization
        self.teamCountLabel.text = [NSString stringWithFormat:@"%d",teamCount];
    }
    return self;
}

Das hat aber auch nicht geklappt. Es wird nur der Wert geladen, den ich dem Label in der NIB-Datei gegeben habe. Ich habe den Code mit verunreinigtNSLog()s und es werden die korrekten Variablenwerte herumgereicht, es wird nur die Beschriftung nicht gesetzt.

Jede Hilfe wäre sehr dankbar.

BEARBEITEN: Ich habe gerade versucht, eine Instanzvariable in meinem festgelegten Initialisierer festzulegen und dann die Bezeichnung in viewDidLoad festzulegen, und das funktioniert! Ist dies der beste Weg, um dies zu tun?

Wenn Sie diesen modalen View-Controller schließen, aktualisiere ich auch den Text einer Schaltfläche in der Ansicht des aufrufenden ViewControllers. Wenn ich jedoch diese Taste erneut drücke (um die modale Ansicht wieder anzuzeigen), während die andere Ansicht auf dem Bildschirm animiert wird, hat die Taste vorübergehend wieder ihren ursprünglichen Wert (von der Feder). Weiß jemand warum das so ist?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage