Einstellungen verwalten
Dateien aus Bundles laden
-
Zugriff auf Dateien im Bundle geschieht erfolgt über das
Main Bundle. -
Beispiel: Manuelles Laden des Bildes “icon.png” (um das Caching von
[UIImage imageNamed:]zu umgehen):NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]; UIImage *uncachedImage = [[UIImage alloc] initWithContentsOfFile:path];
Preference Panes für Benutzereinstellungen
-
Einstellungsseiten werden über ein
Settings bundlein der Anwendung vorgegeben:
-
settings.bundleenthält eine Beschreibung der Konfigurationsoptionen in.plist-Dateien (Root.plistfür die Hauptseite, für mehrseitige Preferences weitere .plist-Dateien), Übersetzungen der Preferences-Texte sowie optional Icons. -
Anlegen mit
File > New File > Resource > Settings Bundle
Settings Bundle
Einstellungs-Typen
PSTextFieldSpecifier(Eingabefeld)PSTitleValueSpecifier(Label)PSToggleSwitchSpecifier(Schalter)PSSliderSpecifier(Slider)PSMultiValueSpecifier(Auswahlbox)PSGroupSpecifier(Gruppierung in einer Seite)PSChildPaneSpecifier(Unterseite)
Settings Bundle: Übersetzungen
-
Settings sind standardmäßig mehrsprachig (
StringsTableKey inRoot.plist) -
Für jede unterstützte Sprache existiert ein
<Landeskürzel>.lprojVerzeichnis, das die Übersetzungen für dieTitle-Attribute der.plist-Dateien in einer<StringsTable>.stringsDatei enthält. Darin werden Übersetzungen alskey-valuePaar angegeben:// Translations "some_key" = "Some value"; "Foreground" = "Vordergrund"; "Background" = "Hintergrund";
NSUserDefaults
-
Der Zugriff auf die Werte erfolgt über
NSUserDefaults:NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; BOOL isSomethingEnabled = [preferences boolForKey:@"some_bool_preference"];
-
NSUserDefaultskann auch dazu verwendet werden, Anwendungszustand zu persistieren:NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; [preferences setBool: NO forKey: @"some_bool_preference"]; [preferences setObject: someObject forKey: @"some_key"];
Default-Werte
-
Im
Settings.bundlekönnenDefaultValuesangegeben werden. -
Die Standardwerte sind für die Anwendung nur sichtbar, nachdem der Anwender die Einstellungsseite betreten hat.
-
Der Fall, dass der Benutzer die Einstellungsseite nie betreten hat, muss im Code gesondert behandelt werden:
NSString *someBoolPreferenceKey = @"some_bool_preference"; NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; id value = [preferences objectForKey:someBoolPreferenceKey]; if (value == nil) { [preferences setBool:NO forKey:someBoolPreferenceKey]; } BOOL isSomethingEnabled = [preferences boolForKey:someBoolPreferenceKey];

