Xcode/ Objective C Textfields im code ändern

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Für iOS: Zuerst sollte man wissen, wie man mit dem Interface Builder (in Xcode auf *.storyboard klicken) umgeht. (Man könnte die UI-Elemente auch programmatisch erzeugen und dem View hinzufügen, aber benutze erst mal lieber den Interface Builder...)

Im Interface Builder die Elemente UIButton, UILabel & UITextField per drag & drop aug den View ziehen.

In ViewController.h (@interface) folgende Properties anlegen: @property (weak, nonatomic) IBOutlet UITextField *tfInput; @property (weak, nonatomic) IBOutlet UILabel *lblOutput; @property (weak, nonatomic) IBOutlet UIButton *btnAction; und eine Methoden-Deklaration für den TouchUpInside-Event: -(IBAction)btnAction_Pressed:(id)sender;

Jetzt wo diese Properties mit IBOutlet & IBAction markiert sind, sind diese auch im Interface Builder sichtbar!

Auf das Storyboard klicken, um wieder in den Interface Builder zu gelangen. dort klickst Du jetzt auf einen der UI-Elemente mit der rechten Maustaste. Im Kontext-Menü "New referencing outlet" klicken, Maustaste halten und den "Faden" auf den ViewController ziehen und loslassen. Jetzt erscheint eines der IBOutlets von vorhin. Und diesen nochmal anklicken. Das wiederholst Du mit allen UI-Elementen!

Beim UIButton machst Du dasselbe nochmal, aber wählst statt "New referencing outlet" "TouchUpInside". Auf dem ViewController angelangt erscheint der Name der Methode, die mit IBAction markiert wurde.

In ViewController.m (@implementation) fügst Du nun die Methoden-Definition des Button-Events ein. dort geschieht das Auslesen des TextFields und setzen des Label-Inhalts:

-(IBAction)btnAction_Pressed:(id)sender {
    NSString *szEingabe = _tfInput.text;

    _lblOutput.text = szEingabe;

    //oder

    [_lblOutput setText:szEingabe];
}

Wie Du siehst kann man das von der Syntax her auf 2 Arten machen. Wenn Du Dich mehr mit Objective-C befassen willst, gewöhn Dir die 2 Syntax an!

Jetzt noch was Wichtiges: Wenn man in das Textfield klickt, erscheint die Tastatur. Und sie wird bestimmt z.B. das Label oder den Button verdecken, so dass man den Button nicht mehr klicken kann. Damit die Tastatur nach dem Return wieder verschwindet, muss das Delegate des Textfields auf den ViewController zeigen, da wir dort das Verhalten des Textfields beim Drücken der Return-Taste bestimmen können:

Also in ViewController.h anfügen:

@interface ViewController : UIViewController <UITextFieldDelegate>

Und in ViewController.m textFieldShouldReturn: abfangen:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return true;
}

[textField resignFirstResponder] sorgt für das Verschwinden der Tastatur:

Ein letzter Tipp: Wenn Du folgende Keywords googlest uitextfield uibutton uilabel tutorial bekommst Du von Google viel bessere Anleitungen als meine!

Try this : http://lmgtfy.com/?q=uitextfield+uibutton+uilabel+tutorial+deutsch

  1. Es ist gerade bei Objective-C wichtig, sich an die Konventionen zur Benennung der Variablen und Bezeichner zu halten. Wenn man „label1" liest, kann man davon ausgehen, dass der Schreiber dieses „Unwortes“ nicht die Grundlagen von Objective-C verstanden hat. Sieh' dir mal die Bezeichner der Variablen in der Dokumentation an. Die Zeiten, in denen man Variable1, Variable2, Variable3 … schrieb, sind in Java und bei Objective-C längst Vergangenheit. Natürlich macht es zunächst „mehr“ Arbeit, sich da was brauchbares einfallen zu lassen. Das lohnt sich aber für die spätere Dokumentation und für das Lesen des Quelltextes. Bezeichnungen wie labelFirstName, labelLastName, labelBirthday, labelColor oder labelTemperature lassen erkennen, dass in die Felder ein Nachname, Vorname, Geburtstag, Farbe oder eine Temperatur einzutragen ist.
  2. Da der Compiler jede Schreibmöglichkeit eines Wortes akzeptiert, solltest du gerade beim Programmieren auf die Rechtschreibung achten. Bezeichner wie name, Name, NAME, nAmE … sind 4!! verschiedene Bezeichner, die akzeptiert werden. D.h. es werden 4 unterschiedliche „Namen“ mit 4 unterschiedlichen Bedeutungen angelegt …
  3. Anbei eine Sammlung von Links zur Dokumentation, Büchern, Podcasts usw …: http://www.gutefrage.net/tipp/xcode-und-cocoa-programmierung-fuer-mac-os-x-und-ios

wieso kommt ein fehler beim kompilieren?

Hey Leute, bin 15 Jahre alt und lerne gerade die Programmiersprache, weil ich etwas in Richtung Informatik studieren will. Dafuer habe ich mir ein Buch gekauft und das heisst 'C Programmieren von Anfang an' von Helmut Erlenkoetter. Ich scheitere irgendwie schon beim Kompilieren. Dort wird ein Beispielprogramm angegeben das man abschreiben sollte

/* bspl0001.c */ 

#include <stdio.h>

main(){ 

    printf("\nDies ist mein erstes C-Programm.\n");

    printf("\nWie sie sehen, kann 'printf' ");

    printf("nicht nur Texte drucken,\n);

    printf("sondern auch rechnen. \n\n"); 

    printf("13 * 7 = %i \n", 13 * 7);

 }

und wenn ich kompilieren will dann kommen mehrer Error's. Die Entwicklungsumgebung mit der ich arbeite heisst Pelles C IDE. Ich habe mir diese ausgesucht, weil ich von mehreren Personen gehoert habe, dass sie anfaengerfreundlicher ist. Ich hoffe ihr koennt mir weiterhelfen.

Die Error's die mir angezeigt werden:

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(6): error #1040: Unterminated string or char constant.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2099: Missing type specifier; assuming 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2117: Old-style function definition for 'main'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2140: Type error in argument 1 to 'printf'; expected 'const char * restrict' but found 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2001: Syntax error: expected ')' but found ';'.

* Fehlercode: 1 * Fertig.

...zur Frage

MacBook und xCode für Software-Entwicklung?

Hallo zusammen,

ich programmiere schon lange Zeit für Android, da ich ursprünglich Java gelernt habe. Bisher habe ich viele unterschiedliche Apps geschrieben und empfinge keinen Anreiz mehr, mich auf Android zu beschränken. Hinzu kommt, dass ich privat iOS nutze und meine Apps im Store nicht selbst nutzen kann - nur auf meinen Programmier-Androids.^^

Mich reizt es schon seit Jahren, für OSX- bzw. iOS zu programmieren. Deswegen spiele ich aktuell mit dem Gedanken, mir einen Mac zuzulegen und auf Swift bzw. Objective-C umzusteigen. Mich reizt das insbesondere deswegen, weil ich die Unterschiede der eizelnen Programmiersprachen kennenlernen möchte und mein Spektrum so erweitern kann. So viel zum Hintergrund ;-)

Privat nutze ich bisher nur einen Desktop-PC mit Windows, nun möchte ich mir einen Laptop zulegen. Diesen Anschaffungsgrund möchte ich mit den obigen Details verbinden, weswegen ich mir trotz dem Preis gerne ein MacBook zulegen möchte. Wichtig ist für mich ein großer Bildschirm, somit bleibt bei Apple nur der 15 Zoll Bildschirm, was mich wiederum ausschließlich auf das MacBook Pro mit 15" bringt. Alle anderen MacBook's besitzen leider zu kleine Bildschirme... (< 15") Da ich auch nicht unbegrenzt Geld habe, würde ich mir das MacBook Pro mit 2,2 GHZ zulegen. Da es bei Saturn "sehr günstig" ist, würde ich gerne dieses beziehen: http://www.saturn.de/de/product/_apple-macbook-pro-mit-retina-display-2002523.html

Um für Apple programmieren zu könnne, führt kein Weg an xCode vorbei, deswegen meine Frage, ob xCode auf diesem obigen MacBook stabil und flüssig läuft? Oder macht es wenig Sinn, auf dem MacBook zu programmieren? (Wobei man es ja einen großen Bildschirm anschließen kann...)

Die zweite Frage ist, ob xCode etwas kostet? Wenn ja- wie viel? Mich verwirren die Angaben im Netz ein wenig, da einmal mit Lizenz gesprochen wird und einmal ohne, was dazu führt, dass xCode etwas kostet. Ist es also so gemein:

Apple developer Lizenz (79€ jhl.) -> xCode kostenlos

Keine Lizenz -> xCode kostet 5€

Die dritte Frage ist, ob man mit xCode direkt auf dem iPhone programmieren kann, ohne eine Developer Lizenz zu besitzen. Sprich: Ich schreibe eine "hello world" App und möchte diese auf meinem eigenen Gerät - kann ich diese überspielen bzw. über xCode auf dem eigenen Gerät kompilieren? Oder braucht man dafür die Developer Lizenz?

Wenn man die App in den Store bringen möchte, führt kein Weg an der Lizenz vorbei. Wenn ich mir die Lizenz also für ein Jahr kaufe, eine App in den Store hochlade und das Jahr vorbeigeht und ich die Lizen nicht verlängere - was passiert dann? Wir die App entfernt? Habe ich noch Zugriff -> Updates einspeisen?

Ich freue mich über jede Antwort, die abgegeben wird! :-)

Beste Grüße und schon im Voraus Danke, Hummelxy

...zur Frage

Was möchtest Du wissen?