Archiv

iOS-Programmierung (3) – Das Gleiche in grün … nur ein bischen größer


Weiter geht es in der Arbeit im wundervollen Buch von David Mark et al: Beginning iPhone Development with Swift. Kapitel 3 beschäftigte sich mit der Grundidee, die hinter der Kommunikation zwischen grafischer Benutzeroberfläche und verarbeitender Programmlogik steckt. Es gab einen ersten Einblick, was XCode zur Verfügung (u.a. drag-and-drop-Gestaltung des Bennutzerinterfaces) stellt und worum man sich dadurch alles nicht kümmern muss (die eigentliche programmiertechnische Umsetzung). Außerdem wurde gezeigt, mit welchen Mitteln man eine Zuordnung zwischen den Interfaceobjekten herstellt und dem, was sie bewirken sollen – anders ausgedrück, wo man nun sein eigenes Programm auch wirklich schreibt.

Kapitel 4 gibt einen Überblick über die Kontrollelemente, die dem Programmierer zur Verfügung stehen. Das sind die darstellenden Elemente image view und label und die Interaktionselemente text field und slider zur direkten Werteingabe bzw. switch und segmented control als ein-aus-Schalter.

Erste Gedanken beim Lesen und Umsetzen des Kapitels:

  • Spätestens an dieser Stelle wird die mac-eigene Tastatur zur Qual.
  • Als ursprünglicher Windows-Nutzer ist mir die gemeinsame Menüleiste oben immer noch fremd – das wird mir hier wieder bewusst. Ich hätte z.B. die Funktion „horizontales Zentrieren“ zum einen niemals dort und zum zweiten niemals hinter dem Menüpunkt „Editor“ vermutet oder gesucht. 
    Es ist aber auf diese Art sehr viel einfacher, Layout-Constraints zu setzen als auf die im letzten Kapitel beschriebene Art und Weise

Advertisements

iOS-Programmieren lernen (2) – weiter geht’s 


Inzwischen bin ich in Kapitel 3 des fantastischen Buches Beginning iPhone Development with Swift von David Mark et al. angelangt. Hier wird nun erklärt, wie die Verbindung zwischen der graphischen Repräsentation (view) im Interface-Builder und der zugehörigen Controller-Datei hergestellt wird.

Das Wichtigste hierbei sind vermutlich die beiden Begriffe „Outlet“ und „Action“. Ist ja auch schon mal hilfreich zu wissen, wonach man googlen muss, um Tutorials zu finden … 😉

  • Randbemerkung: Die Dateinamen und Bezeichnungen unten beziehen sich auf ein neues Projekt mit Single View Application-Template ohne besondere Anpassungen.
  • Ein Outlet ist eine speziell getaggte Variablendeklaration in der zur view (Grafische Ansicht in Main.storyboard) gehörenden Controller-Datei (Programmtext in ViewController.swift).
    Diese Variable stellt eine Repräsentation des Grafikobjektes dar und wird beim Ausführen automatisch mit dem zugehörigen visuellen Objekt im Interface Builder  verbunden. 
    Durch Änderung der Attribute (z.B. text) dieser Variablen wird das zugehörige Interface-Objekt verändert 
    – ohne, dass man etwas dafür tun müsste. Erkennbar sind outlet-Variablen am vorangestellten Schlüsselwort @IBOutlet.
  • Am einfachsten erzeugt man so eine Outlet-Variable (in der Assistentenansicht) durch Auswählen des gewünschten Objektes im Interface Builder, dann gleichzeitiges Drücken auf [ctrl] und [Maustaste], und Ziehen des jetzt erscheinenden Pfeiles auf die Zielposition in der Controller-Datei. Am einfachsten ist das in der Assistenten-Ansicht (rechtes oben einstellbar), dort werden Interface Builder und Code-Editor nebeneinander dargestellt. Es öffnet sich ein Fenster, in dem Verbindungsattribute gesetzt werden können. Auf jeden Fall sollte hier ein passender Name vergeben werden.
  • Actions sind Funktionen, die durch Benutzerinteraktion ausgelöst werden. Funktion ist dabei im Sinne des programmiersprachlichen Konstruktes gemeint. Auch sie werden am einfachsten durch [ctrl] + [Maustaste] + Ziehen der Maus in den Editorbereich erzeugt – dort muss dann im Popup statt Outlet Action ausgewählt werden. An dieser Stelle wird eine neue Funktion eingefügt, die  gekennzeichnet ist durch vorangestelltes @IBAction. In den Funktionsrumpf wird die gewünschte Reaktion programmiert.
  • Man hat nur dann die Möglichkeit, eine Action zu erstellen, wenn es sich auch um ein Manipulationsobjekt handelt, z.B. einen Button. Bei Labels wird diese Option nicht angeboten.

Im weiteren Verlauf des Kapitels wird der Umgang mit Grafik-Constraints zur automatischen Positionierung beschrieben. 

Etwas neues … iOS-Programmieren lernen


Mit swift hat Apple eine schöne Programmiersprache zur Verfügung gestellt. Und Tutorials zur Programmierung gibt es auch viele im Netz. Was bleibt also zu tun? Genau … Ärmel hochkrempeln, XCode starten, anfangen. Oder so ähnlich.

Schön ist: Man wählt aus, wie die Menüführung der Anwendung ungefähr sein sollte, wählt einen passenden Nahmen und wird nach Click auf den Run-Button (und, je nach Mac, etwas längerer Wartezeit) mit einem funktionsfähigen, laufenden Anwendung im Simulator belohnt. 

Erleichtertes  Aufatmen – Danke, Apple!

Die Schwierigkeit ist nur: Wie bekomme ich nun das, was ich möchte, in dieses schöne, leere Fenster hinein? Die vielen und sehr schönen Tutorials im Netz beschäftigen sich hauptsächlich mit den Grundzügen der Sprachstruktur von Swift, also mit Fragen wie „Wie erstelle ich Variablen und wie manipuliere ich sie?“ oder „Wie erstelle ich Klassen und Strukturen?“ oder „Wie sehen Funktionen aus?“ – aber weniger mit der für mich gerade brennend interessanten Frage, wie ich das Ergebnis meiner Variablenmanipulation auch angezeigt bekomme.

Manchmal ist es hilfreich, zurück zu den Wurzeln zu gehen – in meinem Falle die Bibliothek. Fündig geworden in Form des Buches Beginning iPhone Development with SwiftEdit von David Mark et al. Wie einfach das Leben sein kann 🙂 

  • Kapitel 2: „Hello World“ und Umgang mit Xcode auf der einen Seite, auf der anderen Seite eine kurze und einprägsame Einführung in die Idee hinter MVC (Model-View-Controller, Entwurfsmuster für Software wiki-link). 
    XCode ist so aufgebaut, dass es einem schon fast schwergemacht wird, seine Programme nicht analog MVC zu schreiben, zumindest, wenn man den grafischen Interface Builder verwenden will. Wie bei der Programmausführung aus der grafischen Repräsentation nun ausführbarer Code entsteht, wird kurz, knapp und trotzdem für den Anfang völlig ausreichend beschrieben. Außerdem wird hier erklärt, wofür das ominöse „nib“ steht, über das man immer wieder stolpert, und was es mit den Dateitypen *.xib und *.storyboard zu tun hat.
    Am Ende des Kapitels kann man Hello World in all seiner Pracht und Unfunktionalität im Simulator bewundern – aber schon im nächsten Kapitel steht, wie man tatsächlich Funktionalität in sein Programm hineinbekommt

Pfingstmontag: Scans und Bilder


Ein wunderschönes Pfingstwochenende! Gestern Abend schwebten die ersten Ballons für dieses Jahr vorbei…

What a wonderful weekend! Yester-eve the first ballons of the year came passing by …

P2605120009

… das steuerbedingt etwas verspätete Bild zum Lavendel …

… alittle belated due to tax deadline the promised lavender heart …

Lavendelherz 

Die Woche habe ich versucht, meine Ideen übers Visshudha-Chakra in Form zu bringen, aber ich bin nicht wirklich zufrieden …

I also mused over Visshuda-Chakra in formdrawing, but I’m far from content with my idea so far …

Visshuda-Idee

Rhythmus als Mittel gegen Stress?


In allen Büchern, die ich in der letzten Zeit über Kindesentwicklung gelesen habe, zieht sich ein Punkt durch fast alle Kapitel: wie wichtig ein ausgeglichener Tages- und Lebensrhythmus für Kinder ist. Zuerst unbewusst, inzwischen immer bewusster, frage ich mich dann, ob dort nicht besser stünde, wie wichtig Rhythmus für Eltern ist – beziehungsweise Erwachsene im allgemeinen?

Kinder imitieren das, was ihnen vorgelebt wird, sie kopieren unwillkürlich und automatisch. Sie spiegeln dadurch die Verhaltensweisen der Erwachsenen in ihrer Umgebung – manchmal besser, als uns lieb ist. In einer Umgebung dagegen, die verlässlichen Rhythmen folgt, auf deren Tagesablauf man sich verlassen kann und deren Woche Fixpunkte bildet, wird die Routine, die verlässlichen Strukturen wie von selbst übernommen.

Aber nicht nur Kinder profitieren davon. Auch für Erwachsene ist es unglaublich entspannend zu wissen, was als nächstes kommt, worauf man sich verlassen kann, auch welche festen Aktivitäten man hin planen kann, ohne ‘Überraschungen’ fürchten zu müssen (unangenehme Ereignisse wie spontane Zahnarztbesuche einmal ausgeklammert) – der wöchentliche Ballettkurs am Samstag fällt dann nicht einfach so vom Himmel, sondern ist ein verlässlicher, präsenter Bestandteil des Planungshorizontes.

Mit anderen Worten: eine Lebensweise, die eingefahrenen, etablierten Rhythmen folgt, dient der Entspannung. Für die Erwachsenen – und damit auch für Kinder.