Dies ist eine sehr einfache iPhone/Cocoa Frage. Ich habe eine Schaltfläche, die zwischen zwei Ansichten wechselt. Ich setze das meiste mit dem Interface Builder auf. Wenn ich auf die Schaltfläche klicke und die zweite Ansicht angezeigt wird, wie programmiere ich den Text der Schaltfläche programmatisch (z. B. "zurück")?Zugriff auf Benutzeroberflächenelemente, die im Interface Builder im Controller erstellt wurden?
Antwort
Sie müssen einen "Ausgang" definieren und verbinden. Werfen Sie einen Blick auf the documentation und beachten Sie den Abschnitt "Verbindungen und Bindungen".
In der Klassendeklaration, ein Button-Objekt, erklären und sicherstellen, dass es als IBOutlet angegeben:
IBOutlet UIButton* myButton;
Sobald Sie diese Änderung speichern, wenn Sie Interface Builder gehen, sollten Sie diesen Ausgang sehen wenn Sie mit der rechten Maustaste auf den Eigentümer Ihrer Datei klicken (vorausgesetzt, Sie haben den Besitzer der Datei richtig angegeben). Verknüpfen Sie diesen Ausgang mit der UIB-Schaltfläche auf dem Bildschirm, indem Sie mit der rechten Maustaste ziehen.
Jetzt ist das On-Screen-Objekt Ihrem In-Codenamen zugeordnet.
Überall dort, wo Sie den Text auf der UIButton, sagen Sie einfach zu ändern:
[myButton setTitle:@"Back - or whatever else you want it to say"
forState: UIControlStateNormal ];
// you can set different title text for each state
// of the button (selected, active, or normal)
Sie werden für IB einen Ausgang einrichten müssen:
@interface MyViewController : UIViewController {
IBOutlet UIButton *myButton;
}
speichern, bringen IB, Setzen Sie den Besitzer der Datei auf MyViewController, und erstellen Sie dann im Fenster "Connections" Informationen zu den entsprechenden Punkten im Eigentümer der Datei.
Dann in der Umsetzung, könnten Sie tun:
[myButton setTitle:@"Back" forState:UIControlStateNormal];
Wenn Sie mit den Verbindungen verloren gehen, würde ich empfehlen bei http://www.stanford.edu/class/cs193p/cgi-bin/index.php, einen Blick auf die Vorlesungsnotizen und Video-Vorlesungen, die in einige Details gehen über iPhone Grundlagen.
Hoffe, dass hilft.
Alternativ können Sie dem Steuerelement ein eindeutiges Tag zuweisen und -[UIView viewWithTag:]
verwenden, um einen UIView
Zeiger auf das Steuerelement zu erhalten. In den meisten Fällen sind Steckdosen der bevorzugte Mechanismus, aber Tags sind in Dingen wie Tabellenzellen nützlich.
Die meisten Beiträge haben sich bisher auf die Erstellung der Schaltfläche konzentriert und sind sehr korrekt. Folgendes beantwortet den Rest der Frage:
Wenn ich auf die Schaltfläche klicke und die zweite Ansicht angezeigt wird, wie programmiere ich den Text der Schaltfläche programmatisch (z. B. "zurück" sagen)?
Der einfachste Weg, wenn ich Ihre Situation richtig verstehe, ist die Verwendung des Plug-n-play UINavigationBarControllers. Zuerst mögen Sie Ihre zweiten View-Controller auf die Ansicht Stapel schieben:
// In firstViewController.m
self.navigationController = [[UIViewController alloc]initWithNibName:@"secondView" bundle:nil];
[self pushViewController:secondViewController animated:TRUE];
Wenn Ihre zweiten View-Controller angezeigt wird, erhalten Sie automatisch eine Zurück-Taste auf der linken Seite der nav-Bar erhalten sollen.Wenn es notwendig ist, den Text, dass Zurück-Taste zu ändern, können Sie einfach darauf verweisen, wie so:
// In secondViewController.m
-(void)ViewWillAppear
{
[self.navigationItem.backBarButtonItem setText:@"GoBack"];
}
Es gibt auch die linke und rightBarButtonItem (n), die für komplexere Navigation handlich ist. Hier ist ein weniger Plug-and-Play-Szenario:
// In secondViewController.h
-(IBAction)goBack; (this should appear as an action in your associated nib file)
// In secondViewController.m
-(void)viewDidLoad
{
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"GoBack" style:UIBarButtonItemStylePlain target:self action:@selector(goBack)];
}
-(IBAction)goBack
{
// logic to be done before going back
[self popViewControllerAnimated:secondViewController animated:TRUE];
}
Also, das ist Ziel-c. Es sieht schmutzig. – jjnguy
- 1. Wie erstellt man UILayoutGuide im Interface Builder?
- 2. Zugriff auf zusätzliches UI-Element im Interface Builder (Storyboard)?
- 3. Die Designansicht ist im Interface Builder verschwunden.
- 4. Tab Reihenfolge im Interface Builder?
- 5. Ziehen Sie die Zeichenfläche im Interface Builder
- 6. UITabBar im Interface Builder - zu unordentlich?
- 7. Konnte IBDesignable Xib im Interface Builder
- 8. iOS-Projekt zeigt keine Interface-Elemente, die aus dem Interface Builder in meiner Sicht erstellt wurden
- 9. Hintergrund von UITableview im Interface Builder festlegen?
- 10. Programmierung mit Interface Builder im Landscape-Modus
- 11. vertreiben Option im Interface Builder des iPhone
- 12. Wie verwende ich QLPreviewController im Interface Builder?
- 13. UI Elemente, die im Interface-Builder einen blauen Rahmen zeigen
- 14. Ausnahme beim Festlegen des Feldes Nib Name im Interface Builder
- 15. Problem beim Laden von Storyboard im Interface Builder
- 16. UIViews, die in Interface Builder erstellt wurden, ändert ihre Position während der Ausführung (UIViewContentMode)
- 17. Zugriff auf Bindings-Variablen im Component-Controller
- 18. Zugriff auf Post-Daten im Controller
- 19. Wie arbeite ich an einer höheren Ansicht im Interface Builder?
- 20. Wie ein NSObject im Interface Builder instanziiert .xib
- 21. Zugriff auf die Konfiguration von application.rb im Controller (Rails 3)
- 22. Bilder im Interface Builder bei Verwendung von MonoTouch
- 23. Center UIView in UIScrollView mit AutoLayout nur im Interface Builder
- 24. Interface Builder "Simulate Interface" funktioniert nicht
- 25. UIView nicht Größenanpassung im Code oder Interface Builder
- 26. Tastaturkürzel zum Ein-/Ausblenden der Dokumentgliederung im Interface Builder
- 27. Das Bild eines UIImageView im Interface Builder einstellen
- 28. Binding in Interface Builder
- 29. Wie setze ich Top Layout Guide im Interface Builder?
- 30. Festlegen der UIButton Layer-Rahmenbreite und -farbe im Interface Builder
Wert zu klären, dass das kein Objekt, sondern eine Variable ist. Die Variable enthält einen Zeiger auf das Objekt (sobald die Spitze geladen wurde). Ich weiß, dass du das weißt, aber viele Leute bekommen das durcheinander und denken, dass die Variable das Objekt ist. –