Preference Bundles are bundles for extending the Settings application.
Structure of a Preference Bundle
Preference bundles should have an extension of .bundle. The principle class of the bundle should be a subclass of PSListController. Most of the time there are lots of preference specifier plists which defines a page of setting. If a specifier plist is called spec.plist, there should be a corresponding localization file called spec.strings. The bundle can have a 29×29 icon, with a preferred name of icon.png.
For more information, see Preferences Specifier Plist Format.
Issues with OS 3.2 and 4.0
PSViewController underwent a massive change after 3.1, breaking all custom subclasses on the iPad and on 4.0 - it is now a UIViewController.
Improper implementations of PSListController subclasses will fail to work properly on 4.0. You must set _specifiers within the -(id) specifiers method (instead of returning a different array of specifiers.) This is because OS 4.0 relies on _specifiers to generate specifier metadata and group indices. Example:
- (id) specifiers {
if (!_specifiers){
_specifiers = [[self loadSpecifiersFromPlistName: kNameOfPreferencesPlist target: self] retain];
}
return _specifiers;
}
Adding a Preference Bundle
To add a preference bundle foo.bundle to the front page of the Settings application, save this as a plist in /Library/PreferenceLoader/Preferences/:
entry = { bundle = foo; cell = PSLinkCell; icon = icon.png; isController = 1; label = "Description of the setting"; };
References
- iPhone Settings Within Settings.app, by Skylar Cantu.
|