Strings

Einem NSTextView Objekt kann ich nur String- Objekte aus: NSAttributedString übergeben. Das geht mit der Methode: appendAttributedString.

Beispiel:
NSAttributedString *next=[[NSAttributedString alloc] initWithString:@“\n“];
[protokoll_speicher appendAttributedString:next];

wobei protokoll_speicher der Inhalt unseres NSTextView ist und über:
protokoll_speicher=[protokoll textStorage];
deffiniert, gebildet… wird?

Was nun, wenn ich einem NSTextView Objekt eigentlich einen StringWithFormat übergeben möchte? Funktionieren tut das:

Bildschirmfoto 2013-10-20 um 20.37.40

 

Warum? Ich muss da wohl noch forschen……

Objekte

NSTextfield und dergleichen, sind Objekte! Also weder ein String, noch ein Integer usw….

Objective C kennt beides, also beispielsweise Strings als auch String- Objekte. Man darf nur nicht auf die Idee kommen beides zu vermischen.

Möchte Man den Inhalt eines NSTextfield Objektes auswerten, dann sollten wir wissen, was da drin steht (String oder Zahl?)

Wenn wir das wissen, dann können wir den Inhalt z.B. direkt einer int Variablen zuweisen:

int i=[textfeld intValue];   // Aus einem Objekt wird eine Zahl 🙂

Wenn wir das nicht brauchen, weil wir z.B. den Inhalt des Textfeldes nur auswerten möchten, dann kann man das so anstellen:

if ([textfeld intValue]==0) …….

Kein Hexenwerk!

Grafische GUI’s ein erster Versuch

Kompliziert, wenn man so was gleich versuchen möchte und auf dem weg, so nebenher die Sprache die man dafür braucht – Objektive C – lernt. Mal sehen.

Grundsätzlich führten die Folgenden Schritte unter X- Code zum Erfolgt und dürften sich nicht grundsätzlich ändern, egal ob große oder kleine Programmierprojekte. Mal sehen:

Die Ersten Schritte

  • Ein neues Projekt erzeugen. Eine „Cocoa Application“
  • Man erhält eine Liste vordeffinierter Dateien
  • Das ganze ist bereits lauffähig, nur nutzen tut es noch nicht viel, weil nur ein leeres Fenster angezeigt wird

Was Fange ich jetzt an? Wir füllen die oben erzeugte – noch leere Hülle – mit Leben:

  • Wir setzte „Buttons“, „Textfelder“, etc in das leere Fenster
  • Die „Controler“ Klasse erzeuge
    Wie man eine eigene Klasse erstellt ist hier im Detail beschrieben. Es wird das Interfaces der Klasse (Datei *.h)  und die implementation (Datei *.m) erstellt.

    Bildschirmfoto 2013-10-13 um 13.55.54

    Das Interface unserer „Controller“ Klasse. Da stehen die Eigenschaften unseres „GUI Objektes“ und es werden die Methoden inklusive deren Über- und Rückgabewerten deffiniert

  • Innerhalb der Implementation schreiben wir jetzt die Methoden der Klasse(n) die wir im Interface bestimmt haben:

    Bildschirmfoto 2013-10-13 um 13.56.59

    Die Implementation unserer „Controller“ Klasse. Da stehen die Methoden, die wir im Interface vereinbart haben.

Letzter Schritt. Zwischen der eben erzeugten Klasse (hier im Beispiel „Controller“ genannt) einen Bezug zur Benutzeroberfläche herstellen (wass immer das im Detail bedeutet, Recherche und lernen vonnöten )

  • Wir ziehen uns aus der „Object“ Library das mit „Object“ benannte Steuerelement auf den Bereich Document Outline
  • Dieses Objekt muss nun unserer Klasse „Controller“ zugeordnet werden. Das machen wir mit dem Idendity Inspektor.
  • Mit dem Conections Inspector verbinden wir nun die einzelnen Objekte

Binding

Das War’s!