InAppSettings是一款开源的iPhone和iPod touch框架,可以在应用程序中显示Settings.bundle中的设置。
关于应用程序设置应该放在应用程序中还是设置应用程序中,已经有很多争议。InAppSettings是一款开源框架,旨在一次性解决这个问题,通过允许开发者轻松地在他们的应用程序中实现与设置应用程序相同的设置。InAppSettings使用同一的Settings.bundle,因此不会复制文件或工作。只需将InAppSettings添加到应用程序的项目中,并从代码或Interface Builder调用其视图控制器,就完成啦!InAppSettings的Wiki包含一份完整的指南,包括示例代码,用于将InAppSettings添加到iPhone或iPod touch应用程序中。
作者:David Keegan
感谢
InAppSettings由David Keegan开发,并根据MIT许可证分发,因此可以用于免费或商业应用程序。有关更多信息,请参阅LICENSE文件。
将InAppSettings拖入Xcode中的项目。确保对话框看起来像这样,然后按'添加'。
如果您将在多个项目中使用InAppSettings,并且我希望您这样做:),请将InAppSettings添加到Xcode首选项中的源树。如果您这样做,则'添加'设置应如下所示,然后按'添加'。
InAppSettingsViewController
是一个继承自 UIViewController
的子类,用于展示 Settings.bundle 中的设置。它可以通过代码和界面构建器使用。
从代码中使用 InAppSettingsViewController
#import "InAppSettings.h"
- (IBAction)showSettings{
InAppSettingsViewController *settings = [[InAppSettingsViewController alloc] init];
[self.navigationController pushViewController:settings animated:YES];
[settings release];
}
从界面构建器中使用 InAppSettingsViewController
要在界面构建器中使用 InAppSettingsViewController
,请将任意 UIViewController
的类类型更改为 InAppSettingsViewController
。
为了正确运行,InAppSettingsViewController
必须添加到现有的 UINavigationController
中。
InAppSettingsTestApp 展示了如何通过代码和界面构建器使用 InAppSettingsViewController
。
InAppSettingsModalViewController
是一个继承自 UIViewController
的子类,可以创建自己的 UINavigationController
。它旨在作为模态视图使用,并带有用于关闭视图的“完成”按钮。
如何从代码中使用 InAppSettingsModalViewController
#import "InAppSettings.h"
- (IBAction)presentSettings{
InAppSettingsModalViewController *settings = [[InAppSettingsModalViewController alloc] init];
[self presentModalViewController:settings animated:YES];
[settings release];
}
InAppSettingsModalViewController
不应从界面构建器中使用。
InAppSettingsTestApp 展示了如何将 InAppSettingsModalViewController
作为模态视图使用。
Settings.bundle 中的用户默认设置在启动时未初始化,只有当在设置应用中查看时才初始化。InAppSettings 有一个可以调用以初始化 Settings.bundle 中所有用户默认设置的 registerDefaults
类方法。
如何从代码中使用 [InAppSettings registerDefaults]
应该从 AppDelegate 的 initialize 方法中调用 InAppSettings 的 registerDefaults
方法。
#import "InAppSettings.h"
+ (void)initialize{
if([self class] == [AppDelegate class]){
[InAppSettings registerDefaults];
}
}
'AppDelegate' 的名称需要更改为您应用程序 AppDelegate 类的名称。
InAppTitle
是一个可选的设置指定键,可以添加到任何设置指定键中。如果存在,此标题将在 InAppSettings 中使用。
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>Change the theme of the app</string>
<key>InAppTitle</key>
<string>Change the theme of the app, these changes will take effect the next time the app is launched</string>
</dict>
设置应用将显示:“更改应用程序的主题”,但 InAppSettings 将显示:“更改应用程序的主题,这些更改将在下一次应用程序启动时生效”。
InAppTitle
是一个可选的设置指定键,可以添加到 PSTitleValueSpecifier
中。如果存在一个展开指示符将添加到单元格,当单元格被点击时将打开指定的 URL。
<dict>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>Title</key>
<string>Created by:</string>
<key>Key</key>
<string>testUrl</string>
<key>DefaultValue</key>
<string>kgn {+}</string>
<key>InAppURL</key>
<string>http://www.kgn.com</string>
</dict>
要打开网页,URL 必须以 "http://" 开头。
InAppSettingsTestApp 是一个用于测试 InAppSettings 的 Xcode 项目。它还展示了使用 InAppSettings 视图控制器和类方法的全部方式。