0

在我的 cocoa OS X 应用程序中,我有一个带有 xib 文件的WindowController两个 带有 xib 文件的ViewController,我在 WindowController 中添加了一个自定义视图,我通过在单击时删除和添加这些视图来交换这两个子视图继续或下一步按钮。

[[theViewController view] removeFromSuperview];
self.theViewController = [[WelcomeInstallViewController alloc] initWithNibName:newView bundle:nil];
[innerInstallerView addSubview:[theViewController view]];
[[theViewController view] setFrame:[innerInstallerView bounds]];

现在在其中一个视图中,我有一个按钮需要禁用 WindowController 中的继续按钮。我已经查看了NSNotificationCenter,这是我的第一个 mac、cocoa、objective c 应用程序。我应该使用 NSNotificationCenter 吗?我很困惑,没有正确理解。

在此处输入图像描述

4

2 回答 2

1

给猫剥皮的方法有很多。。

最简单的方法包括向您添加一个插座NSWindowController并将按钮链接到 Interface Builder 中的该插座,然后在您需要的任何条件下处理按钮启用。

通知是松散耦合应用程序组件的一种好方法,例如,如果窗口控制器没有启动会触发按钮禁用/启用自身的状态更改。

其他可能性包括NSUserInterfaceValidations,这是 Cocoa 中的一种专用机制(协议),用于...

允许用户界面元素的目标(例如菜单项或工具栏项)决定是否应启用用户界面元素。

于 2013-04-16T08:41:48.730 回答
0

鉴于类似的设计要求(多个可加载的 XIB),我使用该NSViewController范例允许将逻辑附加到我加载到主视图中的子视图。在这种情况下,我将创建一个NSViewController具有 bool 属性的子类(我们称之为它canContinue),我将从主视图的按钮绑定到所有者的subview.canContinue.

如果你这样做,当你引入每个单独的子视图时,主视图将不得不加载视图控制器(它将负责加载 XIB),然后确保将subview所有者中的属性分配给指向NSViewController你加载。

于 2013-04-16T09:12:58.277 回答