DBPrefsWindowController 0.0.1

DBPrefsWindowController 0.0.1

测试已测试
语言语言 Obj-CObjective C
许可协议 CC
发布时间最新版本2014年12月

未指定 维护。



  • 作者:
  • Dave Keegan

最初由 Dave Batton 创建。

创建应用程序首选项窗口并不困难。只需创建一个 NSWindowController,设置工具栏,创建一个 nib 文件,包含一系列自定义视图,或者使用 NSTabView 对象。问题是,仅设置工具栏和视图交换机制就需要很多代码,这对于每个应用程序基本上都是相同的。这听起来是创建一个新类的好机会。

DBPrefsWindowController 的目标是减少创建首选项标签的冗余,每个工具栏图标只需一行代码。这是通过名为 DBPrefsWindowController 的 NSWindowController 子类实现的。

使用 DBPrefsWindowController

如果您熟悉子类化以及与 Interface Builder 一起工作,您将能够从包含的示例项目中找出如何使用它。基本上,您只需子类化它并将您的 .h 文件连接到自定义视图的 nib 文件。nib 文件应命名为 Preferences。然后只需调用 -addView:label: 以指定要显示的视图以及要使用的标签

- (void)setupToolbar
{
    [self addView:generalPreferenceView label:@"General"];
    [self addView:colorsPreferenceView label:@"Colors"];
    [self addView:playbackPreferenceView label:@"Playback"];
    [self addView:updatePreferenceView label:@"Update"];
    [self addView:advancedPreferenceView label:@"Advanced"];
}

以这种方式设置后,DBPrefsWindowController 将寻找与提供的标签名称匹配的名称的图像文件。如果您的应用程序已本地化,您可以通过调用 -addView:label:image: 来指定用于工具栏图标的图像。

这就是全部内容。如果您已经有了包含首选项窗口专用独立视图的 nib 文件,则可以直接使用它,而不是创建一个全新的 nib 文件。您可以重命名 nib 文件为 Preferences,或者覆盖 +nibName 类方法以使其返回现有 nib 文件的名称。

文档

DBPrefsWindowController 类旨在为在其中使用的每个应用程序进行子类化。子类应设置为 nib 文件“Preferences”的文件所有者。子类应有 NSView 实例,这些实例通过 IBOutlets 连接到 nib 文件中的视图。

nib 文件不需要连接到窗口。如果它连接了,则会忽略它,并创建一个新的窗口以显示首选项视图。

+ (DBPrefsWindowController *)sharedPrefsWindowController

此类方法返回 DBPrefsWindowController 类的共享实例。

+ (NSString *)nibName

如果想要使用名称不是 Preferences 的 nib 文件,则应重写此类。

- (void)setupToolbar

使用对 -addView:label:-addView:label:image: 的调用重写此方法以填充工具栏。

- (void)addView:(NSView *)view label:(NSString *)label

-setupToolbar 中尽可能多次调用此方法,以向首选项窗口添加新的工具栏图标和自定义视图。应可在应用程序捆绑包中找到一个与标签名称匹配的图像。它将用作工具栏图标。

- (void)addView:(NSView *)view label:(NSString *)label image:(NSImage *)image

如果应用程序已本地化,或者您只想使用与工具栏按钮标签不同的名称的图标时,可以使用此方法替代 -addView:label:

- (IBAction)showWindow:(id)sender

调用此方法以显示首选项窗口。例如:[[AppPrefsWindowController sharedPrefsWindowController] showWindow:nil];

- (void)setCrossFade:(BOOL)fade`

调用此方法以启用或禁用视图切换时的渐变效果。默认值为 YES

- (void) setShiftSlowsAnimation:(BOOL)slow

调用此方法以启用或禁用在视图切换时使用Shift键减慢动画的默认值。默认值为 YES