Übergeben Sie einen Wert von einem ViewController zu einem anderen in Objective-C
Ich bin ziemlich neu in Objective-C, Programmierung. Die eine Sache, ich bin derzeit dabei, mit der Sie einen Wert aus der ersten ViewController
zum nächsten.
Habe ich gelesen dieser Eintrag hier und es hat mir nicht helfen. Was lustig ist, da seine Antwort hat fast 500 Stimmen, also ich muss das problem sein. Was ich gemacht habe, war folgende.
Öffnete ich meine PreviewViewController.m
und fügte hinzu, die folgende Zeile #import "MainViewController.h"
da wollte ich übergeben Sie einen Wert aus der PreviewViewController
zu den " MainViewController. Dann, wenn ich schalten Sie die layouts ( die erfolgreich funktioniert ) möchte ich einen Wert übergeben.
MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId = @"539897197";
Wie Sie sehen können, will ich übergeben Sie die Benutzer-id. Für dass, ich habe auch ein Grundstück in der MainViewController.h
@property ( nonatomic, strong ) NSString *userId;
Nun, In meinem MainViewController.m
ich möchte den Zugriff auf die userId. Aber wenn ich mich einloggen es, die Konsole sagt mir, es ist null
. Allerdings, wenn ich die variable direkt vor der NSLog
es funktioniert, so scheint es, die Weitergabe ist das problem.
Zusätzlich in die MainViewController.m
ich habe die folgende Zeile
@synthesize userId = _userId;
aber selbst wenn ich entfernt, die Leitung und änderte die NSLog
zu NSLog(@"%@",self.userId);
das gleiche problem aufgetreten.
Wie kann ich erfolgreich an die Variablen? Welchen Schritt mache ich falsch?
BEARBEITEN
Dies ist, wie Wechsel ich die layouts
UIViewController *viewController = [[MainViewController alloc]init];
MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId = @"539897197";
[self presentViewController:viewController animated:YES completion:NULL];
- MainViewController *mainViewController = [[MainViewController alloc] init];
- Wie gehen Sie aus PreviewViewController zu MainViewController ?
- Bitte zeigen Sie, wie der code, den Sie verwenden für 'wechseln des layouts'. Könnte das problem sehr trivial: Sie sind vorbei an Wert ein view-controller-Instanz und für die Anzeige verwenden Sie eine andere Instanz von view-controller (zum Beispiel der, dass segue erstellt für Sie).
- mainViewController.userId = [[NSString alloc] initWithString:@"539897197"];
- Ich bearbeitete Sie und fügte hinzu, der Teil, wo ich Layouts wechseln
- [self presentViewController:mainViewController animiert:JA Abschluss:NULL];
- Gee, es ist schon fast eine Woche her, seit ich das Letzte mal sah diese Frage.
- mögliche Duplikate von Weitergabe von Daten zwischen View-Controller
- Sind Sie ernst? Ich bin die Verknüpfung der EXAKT GLEICHE BEITRAG in meinem post. Dein Kommentar ist völlig nutzlos.
- Sind Sie der Navigation von PreviewViewController zu MainViewController mit NavigationController oder aus MainViewController zu PreviewViewController ?
- Wenn Sie die navigation von MainViewController zu PreviewViewController, und Sie versuchen, pass Wert von PreviewViewController zu MainViewController, erhalten Sie null. Also lassen Sie mich wissen, die navigation, erste Szenario
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht erstellen Sie eine benutzerdefinierte Initialisierung und pass es so? So etwas wie
Dann können Sie nur:
id
wäre der return-Typ, richtig? Aber ich will nicht etwas zurückgeben. Ich etwas einstellen. Ich Wette, ich bin Total Missverständnisse deine Antwort, aber wie gesagt, ich bin neu in objective-c, ich komme von android und Dinge gibt es sehr viel einfacher. :pWenn Sie
storyboard
dann sollten SieprepareForSegue:
- Methode zum übergeben von Daten zwischen dem view-Controller. Zuerst Erstellen Sie den übergang von IhremPreviewViewController
zuMainViewController
, nur ziehen Sie von Ihrem view-controller zum nächsten viewcontroller erstellen segue. VerwendenUINavigationController
wenn Sie mit push-segue. Verwenden Sie diese Methode, um übergang und die übergabe der Datenverwenden mainViewController anstatt viewController bei der Präsentation der view-controller
Hier haben wir zwei Möglichkeiten zum übergeben von Daten.
Erste Benutzerdefinierten Delegaten
Zweite ist NSNotification
Hier haben wir zwei view-Controllern.
ViewController
und
SecondViewController
in SecondViewController
.h
.m
in ViewController
.h
.m
Für Ihr Verständnis den code erstelle ich eine einfache übergabe von Daten von einem zweiten view-controller zum ersten view-controller.
Zuerst navigieren wir die Ansicht von first-view-controller auf den zweiten view-controller.
Danach senden wir die Daten aus der zweiten view-controller zum ersten view-controller.
HINWEIS : Sie können entweder NSNotification oder Benutzerdefinierten Delegate-Methode für das senden von Daten von Einer View-Controller zu Anderen View-Controller
Wenn Sie NSNotification, müssen Sie die postNotificationName, um Daten in der button action Methode.
Als Nächstes müssen Sie schreiben addObserver in (senden von Daten an das benötigte View-Controller) ViewController, und rufen Sie die addObserver-Methode in derselben View-Controller.
Wenn Sie benutzerdefinierte Delegaten,
In der Regel gehen wir mit Benutzerdefinierte Protokoll Delegieren und auch wir müssen Zuweisen die Delegierten hier.
Sehr wichtig, müssen wir den Benutzerdefinierten Delegaten-Methode in der Zweite View-Controller.Da, wo wir senden der ersten Daten-view-controller einmal klicken wir auf die Schaltfläche "fertig" in der zweiten view-controller.
Schließlich müssen wir rufen die Benutzerdefinierten Delegaten-Methode in Ersten View-Controller, wo bekommen wir die Daten und weisen Sie diese Daten auf label.Jetzt können Sie sehen die übergebenen Daten mit benutzerdefinierten Delegaten.
Ebenfalls können Sie das senden der Daten zu anderen view-controller mit Benutzerdefinierten Delegaten Methoden
Ich versucht und bekam die Lösung für die Verabschiedung der Wert zwischen viewcontroller.
oder mit diesem Weg . Sie don ' T verwenden Sie das storyboard verwenden Sie die folgenden seine Arbeitsmethoden in Ordnung
user3182143
(stackoverflow.com/questions/20267387/...) haben Sie bieten eine Vielzahl von Informationen, fügt eine Menge Wert auf das, was bereits angegeben wurde.