Die übergabe von Daten zwischen view-Controller - iOS-Xcode - was ist ein guter Weg?
Okay, ich werde versuchen dies so einfach wie möglich (ich war scheinbar zu bekommen, die laufen herum auf chat.stackoveflow.com als ich versuchte, diese Frage zu stellen). Ich möchte geben Sie den text aus einem textfield in einem viewcontroller zu einem anderen viewcontroller.
Sollte ich eine Modell - Klasse und speichern Sie die textfield.text in einem Modell.[h/m] Dateien und dann die zweite view-controller Zugriff auf die Daten im Modell gespeichert?
Im Grunde ist dies, was ich habe,
ViewControllerWelcome.h
@interface ViewControllerWelcome : UIViewController { }
@property (weak, nonatomic) IBOutlet UITextField *textFieldUsername;
ViewControllerWelcome.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewControllerHome *home = (ViewControllerHome *)[storyboard instantiateViewControllerWithIdentifier:@"Home"];
NSString *username = _textFieldUsername.text;
home.lblUSERNAME.text=username;
[self presentModalViewController:home animated:YES];
ViewControllerHome.h
@interface ViewControllerHome : UIViewController {
NSString *username;
UILabel *lblUSERNAME;
}
@property (weak, nonatomic) IBOutlet UILabel *lblUSERNAME;
ViewControllerHome.m
- (void)changeUSERNAME {
//get username from welcome tf
ViewControllerWelcome *welcome = [[ViewControllerWelcome alloc] init];
welcome.username = [self lblUSERNAME.text];
//_lblUSERNAME.text = welcome._textFieldUsername.text;
//welcome.textFieldUsername.text = _username;
//username = welcome.textFieldUsername.text;
NSLog(@"username = %@",username);
//welcome.textFieldUsername.text = _lblUSERNAME.text;
//NSLog(@"username = %@",welcome.textFieldUsername.text);
}
Wie Sie sehen können ich habe versucht, verschiedene Dinge, aber Sie konnte nicht kommen mit einer funktionierenden Lösung :-l
können Sie das noch näher erläutern?
InformationsquelleAutor ipatch | 2012-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie mit Storyboards, macht es mehr Sinn, Sie zu verwenden, leitet über zum ausführen des übergangs zwischen Ihrem ViewControllers. Wenn Sie nicht vertraut sind mit leitet über, Sie können einen Blick hier haben:
http://developer.apple.com/library/IOs/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html
Ist es sehr einfach, eine überleitung in IB. Sobald Sie eingerichtet, die Sie implementieren
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
und konfigurieren der Ziel-view-controller. So müssen Sie etwas wie das folgende.InformationsquelleAutor carl_h
Sollten Sie nicht halten starke Referenzen zwischen diesen beiden ViewControllers in beide Richtungen. Was Sie tun können, ist zum Beispiel zu erklären, ein Protokoll in Ihrem
ViewControllerWelcome
mit einem Delegaten. Sie ließ dieViewControllerHome
instantiieren die anderen controller und dann werden seine Delegierten, der informiert wird, sobald der Benutzer nach Eingabe des Benutzernamens.Im @implementation:
InformationsquelleAutor Norbert
wenn Sie haben ein .storyboard-Datei können Sie das layout Ihrer Ansichten in es wie mit dem interface builder.
Diese Dokumente wirklich geholfen, mich aus der ersten Zeit:
Teil 1: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1
Teil 2: http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2
Wenn Sie nur prüfen wollen, die leitet über Teil, würde ich empfehlen, Sie zu Lesen, Teil 2 nur.
InformationsquelleAutor tomidelucca
Ich verfeinerte diese Frage mit einer anderen Frage auf die SO gefunden werden können hier im Grunde habe ich eine singleton-übergeben der Daten zwischen dem view-Controller. Ich habe keine Probleme damit bisher (klopft auf Holz).
InformationsquelleAutor ipatch