Einführung UISegmentedControl

Heute habe ich mir mal UISegmentedControl näher angeschaut und mal getestet, wie das ganze so funktioniert.
Ihr erstellt also zunächst einmal eine frische  View-Based Application. Das Projekt habe ich einfach mal SegmentedControl genannt. Was ist nun zu tun:

1. Wir öffnen unsere .xib Datei und klicken uns im Interface Builder die benötigten Komponenten zusammen.

Dazu benötigen wir ein UILabel und ein UISegmentedControl, was wir beides einfach in unser View „ziehen“ per Drag and Drop.

User Interface UISegmentedControl

Bei euch wird das „First“ in dem UISegmentedControl Objekt blau markiert sein. Ich habe das ganze mal ausgeschaltet, damit beim Start der Application keine der beiden Optionen enabled ist. Dazu nehmt ihr einfach das Häkchen im ersten Segment bei „selected“ raus.

selected - First Segment

2. Nun gilt es eine Action und zwei Outlets in unserem Controller anzulegen und mit dem Files Owner zu verknüpfen

Action anlegen

Outlets anlegen

Verknüpfungen erstellen

Bei der Action („pushSegment“) seht ihr eine Doppelbelegung. Die Methode „Value Changed“ zeigt hier noch auf unser UISegmented Control. Das ist nötig, damit das ganze dann auch eine Zustandsänderung zurückgibt, wenn wir zwischen den einzelnen Segmenten hin- und herschalten.

3. Klassen schreiben lassen via Code-Merging

Wir markieren „File´s Owner“ und gehen über File -> Write Class Files… und lassen uns unsere erstellten Actions und Outlets in unsere .h-Datei schreiben. Vergesst nicht immer alle Änderungen zu markieren (cmd+A) und unten beim Code-Merging „choose left“ zu wählen. Das Ganze macht ihr zwei mal und speichert alles mit cmd+S.

Klassen scheiben

4. Eure SegmentedControlViewController.h Datei…

…müsste nun so aussehen:

//
// SegmentedControlViewController.h
// SegmentedControl
//
// Created by Marcel Sebald on 22.11.10.
// Copyright 2010 upsession. All rights reserved.
//
#import
@interface SegmentedControlViewController : UIViewController {
IBOutlet UILabel *showSegment;
IBOutlet UISegmentedControl *segmentControl;
}
- (IBAction)pushSegment:(UISegmentedControl *)sender;
@end

5. In der SegmentedControlViewController.h erstellen wir nun folgendes


//
// SegmentedControlViewController.m
// SegmentedControl
//
// Created by Marcel Sebald on 22.11.10.
// Copyright 2010 upsession. All rights reserved.
//
@implementation SegmentedControlViewController
- (IBAction)pushSegment:(UISegmentedControl *)sender {
switch (segmentControl.selectedSegmentIndex) {
case 0:
showSegment.text = @"First";
break;
case 1:
showSegment.text = @"Second";
break;
default:
showSegment.text = @"";
break;
}
}

Mit „selectedSegmentIndex“ stellen wir fest welches Segment gerade ausgewählt ist. Daher haben wir vorher auch im Interface Builder die Verknüpfung zu „Value Changed“ hergestellt.
Mit der Switch-Angweisung wird nun festgelegt was bei welcher Segment-Auswahl geschehen soll. Jeder Index beginnt mit Null (0). Wir haben zwei Segmente, also gibt es für uns nur zwei Zustände und zwar 0 und 1. Sobald bei uns das Segment „First“ ausgewählt/selected ist, erscheint „First“ in unserem UILabel, ansonsten „Second“.

Wenn wir jetzt noch (programmatisch) regeln wollen, was beim Start der Application  in unserem UILabel stehen soll ohne es manuell zu beschriften, dann müssen wir in der SegmentControlViewController.m – Datei noch etwas auskommentieren. Ihr findet weiter unten in der Datei folgenden kommmentierten Abschnitt:


/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
showSegment.text = @"...";
}
*/

Diesen Bereich kommentieren wir einfach aus und ergänzen ihn folgendermaßen:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
showSegment.text = @"...";
}

Nun sollte eigentlich alles klappen und ihr könnt eure Application kompilieren!

Building Succeeded

iPhone1 iPhone2 iPhone3

Xcode von Null (aber noch nicht auf Hundert)

Nachdem ich mir den (Video-)Podcast „Xcode von Null auf Hundert“ in iTunes abonniert habe und mir nun gerade täglich eine folge auf meinem iPad ansehe, habe ich eingesehen, dass ich nun irgendwie so richtig Xcode-verrückt geworden bin.

Sofern ihr auch Lust habt euch näher mit Objective-C und Xcode sowie dem Cocoa Framework zu befassen, dann lege ich euch diese Seite ganz besonders ans Herz: http://www.x02100.de

Erstaunlich, dass es wirklich Menschen gibt, die sich so viel Mühe machen und so etwas auf die Beine stellen. Denn der Podcast ist wirklich wahnsinnig gut gemacht und auch für blutige Anfänger bestens geeignet. Hier wird wirklich alles Schritt für Schritt erklärt. Angefangen von der Installation von Xcode, der Erklärung der gängigsten Bedienelemente und Einstellungen bis zur ersten Hello World App für Mac OS X, hier stimmt einfach alles! An dieser Stelle möchte ich den beiden Schöpfern dieses ausgesprochen guten Podcasts, Ingo und Peter, ein dickes Lob aussprechen!

In Ausgabe 6 wurde am Ende noch eine Aufgabe gestellt. Es ging um einen kleinen Rechner, der bei einer Division durch Null einen String ausgeben soll in Form einer Error-Meldung. Diese Aufgabe habe ich wie folgt gelöst:

@implementation CalcController
– (IBAction)pushButton:(NSButton *)sender {

int v1;
int v2;
int r;

v1 = [value1 intValue];
v2 = [value2 intValue];

switch ([sender tag]) {
case 1:
r = v1+v2;
break;
case 2:
r = v1-v2;
break;
case 3:
r = v1*v2;
break;
case 4:
if (v2!=0) {
r = v1/v2;
} else {
r = 0;
}
break;
}

if (([sender tag] == 4) && (v2==0)) { // Ausgabe einer Error-Meldung, wenn durch Null geteilt wird
[result setStringValue:@“ERROR“];
} else {
[result setIntValue:r];
}

}
@end

Anbei noch ein Screenshot meiner App als Beweis. Achja, ich habe noch ein passendes Icon für die App eingebunden.

Screenshot Test- und LernApp iCalc

Mac OS X App - Kleiner Rechner

Dock mit App Icon - Rechner

Dock mit App Icon - Rechner

Da freu ich mich schon direkt auf morgen, dann geht´s mit Folge 7 weiter :-)

Wie beginnt man mit einem Blog?

Hallo zusammen,

hm,… wie fängt man bei so einem Blog denn am Besten an? Ich habe ehrlich gesagt keine Ahnung,… indem ich mich vorstelle vielleicht? Naja, das ist jetzt auch nicht so prickelnd. Oder einfach mal einen ersten Beitrag reinklatschen, ganz kommentarlos, ohne Einstieg, ohne Alles? Auch nicht gerade die feine englische Art.

Am besten informiere ich euch daher lieber einmal wie es um den Blog steht. Ich überlege mir derzeit noch Kategorien und tüftle noch am allgemeinen Aufbau der Seite. Der Blog ist jedoch ab jetzt online verfügbar und wird von mir dann Stück für Stück erweitert, je nach Zeit und Laune natürlich :-)

Ich hoffe trotzdem, dass der ein oder andere mit meinen Beiträgen vielleicht etwas anfangen kann. Ich habe schon mehr oder weniger freiwillig bestimmte Lösungen oder Lösungsansätze in Blogs anderer Menschen gefunden und war darüber immer sehr glücklich, dass es Leute gibt, die ihr wissen mit anderen teilen. Da ist das Internet wohl die beste und einfachste Distributionsplattform, findet ihr nicht auch?

So, nun aber genug für´s Erste. Ich wünsche euch frohes Stöbern in meinen ersten Blog-Versuch.

Marcel