Settings Bundle

Ihr kennt es sicherlich von gekauften Programmen: Ein eigenes Listenelement in den Einstellungen

Diese kurze Anleitung zeigt euch, wie auch Ihr ein so genanntes Settings Bundle in eurer App haben könnt und darauf zugreift.

Zu aller erst erstellen wir ein neues Projekt und wählen „Single View Application“

Drücken Return und benennen es anständig und speichern es an dem Ort an dem auch die anderen eurer Programme abgespeichert wurden.

Jetzt sollte das ganze in etwa so aussehen:

Nun wählt man im Menü „File“ den Eintrag “ New File“ und dort dann „File…“

Ist das geschehen, könnt Ihr neue Files hinzufügen, wie Ihr es vielleicht schon kennt, wenn Ihr mit mehreren Klassen gearbeitet habt. Dazu wählt man unter „Resource“ das File „Settings Bundle“Klickt nun auf „Next“ und speichert es am vorgeschlagenen Ort ab. Nun sieht euer Projekt folgendermaßen aus:

Geht jetzt auf „Root.plist“

und entfernt den Item 1 (Text Field – Name) sowie Item 3 (Slider). Diese beiden sind schon standardmäßig enthalten, werden in diesem Projekt jedoch nicht verwendet um eine bessere Übersicht zu wahren. In diesem File können beliebig viele solcher Items eingefügt werden und zwischen Slider, Textfeld, Switch u.v.m. gewählt werden.

Nun geben wir der Switch noch einen eindeutigen Namen, ich habe sie hier „enableSwitch“ genannt, man kann das ändern wie man will, bzw. was diese Switch denn macht. Der Default Value sollte auf NO gesetzt werden.

Jetzt geht’s zurück in den ViewController.m.

Oberhalb von  -(void) viewDidLoad schreiben wir folgendes:

bool switchState;

und in -(void)viewDidLoad wird das hier hinzugefügt:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkState) name:NSUserDefaultsDidChangeNotification object:nil];

[self checkState];

Dies führt dazu, dass jedes mal wenn die App lädt, geprüft wird, ob etwas in den Einstellungen geändert hat. Dazu wird die Funktion checkState aufgerufen. Diese fügen wir unterhalt von -(void) viewDidLoad ein.

– (void) checkState {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    

    switchState = [defaults boolForKey:@“enableSwitch“];

     NSLog(@“Switch State is: %i“, switchState);

}

Man sieht hier ist es wichtig bei switchState = [defaults boolForKey:@“enableSwitch“]; den Namen anzugeben, der im Root.plist vergeben wurde, ansonsten weiß das Programm nicht, welche Switch gemeint ist.

Zusammen sollte das dann folgendermaßen aussehen:

Klickt man nun auf „Run“, so öffnet sich der iPhone Simulator mit einer weißen App und NSLog sagt:

2012-11-13 17:34:59.618 Einstellungen[6694:c07] Switch State is: 0

 Wenn man nun den Home Button drückt und die Einstellungen öffnet, sieht man unten einen Listeneintrag mit dem Namen der App. Wählt man diese aus so zeigt sich eine Toggle Switch

Geht man nun zurück in die App, meldet NSLog:

2012-11-13 17:35:20.116 Einstellungen[6694:c07] Switch State is: 1

 Das Projekt gibt es auch hier zum Download und später auch auf github.com/brainelectronics

http://dl.dropbox.com/u/3775355/Einstellungen.zip

Advertisements