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

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

Mein Aquarium hat neue Bewohner


Eigentlich wollte ich nur eine neue Leuchtstoffröhre für mein Fischbecken kaufen. Seit einigen Tagen war sie kaputt, und die kleine Arbeitsleuchte, die den Pflanzen und Fischen mehr schlecht als recht ein wenig Licht spendete, sollte nicht zum Dauerzustand werden.

I just wanted to buy a new fluorescent tube for one of my fish tanks. A couple of days ago it blowed, and the tiny lightbulb I placed there instead shouldn’t become a permanent condition.

Also machte ich mich auf zum lokalen Hobbymarkt, um dort auch schnell fündig zu werden. Genauer gesagt wurde ich eines Verkäufers fündig, der dann das von mir benötigte Leuchtmittel ausfindig machte.

So off I went to the local diy-store to find a fitting one. Instead, I found a salesperson who found the right tube for me while I had the pleasure of contemplating on all the displayed fishes and plants.

Währenddessen hatte ich Zeit, mir die verschiedenen Aquarien anzuschauen. “Leider” habe ich keine Bogen um die Garnelenbecken gemacht, so dass ich jetzt ein paar neue Pfleglinge habe: Mandarinengarnelen.

I should have stayed away from the prawn tanks … but I didn’t, and so I now have some new wards: tangerine prawns.

P0907120002

Wo ich gerade da war, habe ich auch gleich nach einer Lösung für mein Schneckenproblem gefragt, und bekam die lakonische Antwort, weniger zu Füttern.
Na dann …

While there I took the opportunity to ask for a solution to my snail problem. The simple answer was: “feed less!”. Well then …

P0907120004

Dann bekam das große Becken noch ein paar neue Pflanzen, und ich die Hoffnung, bald wieder Platz für einen blauen Kampffisch zu haben …

Afterwards I got a couple of new plants for my big tank, and went home with some longing glances to the tanks with the siamese fighting fishes …

P0907120010

Blähbauch durch Histamin-Intoleranz ???


Potbelly from histamine intolerance ???

Als meine Ärztin mich gestern fragte, ob ich schon mal auf Histamin-Intoleranz getestet worden sei, bin ich fast vom Stuhl gefallen vor Überraschung. Das hatte ich nun wirklich nicht als Quelle meiner Beschwerden in Betracht gezogen – kannte ich Histamin bis dato nur als Verursacher allergischer Haut- und Atemwegsreationen. Aber Magen-Darm-Probleme als Allergie?

When my doctor asked me about a known histamin intolerance, I almost fell from my chair from surprise … this was something I never had suspected to be the culprit causing my digestive troubles … Histamine I knew to cause allergic reactions of the skin and the respiratory system. But gastric troubles as an allergy I knewer read about …

Sie gab mir einige Literaturquellen, eine Liste mit Lebensmitteln sowie die Empfehlung, meinen Speiseplan daraufhin zu untersuchen, mit auf den Weg. Leider musste ich feststellen, dass vieles auf der Liste zu meinen täglichen Ernährung gehört – vor allem Tomaten und Pilze, Birnen, Bananen und Erdberen! Auf das Fleisch kann ich als Vegetarier ja gut verzichten …

She gave me a lot to read, and a list with food to stay away from. To my pity I had to realize that most of my daily consume consists of products on this list: tomatos, funghi, peas, bananas, strawberries … Keeping away of meat doesn’t give me any headache, being vegetarian …

Je mehr ich darüber lese, desto mehr Punkte kann ich auf meiner gedanklichen ‘ja, trifft es’-Liste abhaken:

  • Nase putzen direkt nach dem Essen, obwohl kein Schnupfen
  • Nach dem Essen ein Engegefühl in der Brustgegend / das Gefühl keine Luft zu bekommen
  • ca. 3 Stunden nach dem Essen plötzlicher Durchfall
  • Verkrampfte, verhärtete Muskeln im ganzen Körper (durch Übersäuerung)
  • Besserung durch Vitamin- und Mineralstoffpräperate: B6/B12, C, Calcium
  • Besserung durch Basentabletten
    (Vorsicht! Ich nehme sie jetzt seit ca. einer Woche, und hatte in den ersten Tagen dermaßen fürchterliche Blähungen, dass ich das Gefühl hatte zu explodieren – aber meine Muskulatur entkrampft sich so langsam.
    Inzwischen habe ich dazu folgendes gelesen: Das Histamin bewirkt eine verstärkte Ausschüttung von Magensäure, die durch die Basentabletten zwar neutralisiert wird, dabei entsteht aber eine große Menge an CO2 – und das findet seinen Weg ‘hinaus’ – eine Erklärung z.B. hier zu finden)

The more I read about, the more I find to be true:

  • having a running nose short during/after eating without having a cold
  • a feeling of narrowness in the chest, of having breathing problems during/after eating
  • diarrhea about 3 hours after eating
  • cramped, hardened muscles in the whole body (and corresonting aches when moviing)
  • Feeling better with vitamine and mineral supplements and basic additions (caution: high potential for painful flatulences with the latter – but it really helps with the muscle aches. Sorry I can give only references in german language … see above)

Hier einige gute Links zum Thema:

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