1

问候,

我有一个基于视图的应用程序项目,我在其中创建了一个名为“SquareClass”的 NSObject 类。现在,从 Xcode 的界面构建器中,我希望能够将“SquareClass”实例化为具有全局范围的方形对象,这样,当我从任何 UI 控件(即文本框、按钮等)创建操作时... ),我希望能够在这些操作中调用该对象的方法。

例子:

(void)MyAction1:(id)color
{
   [square setColor:color];
}

(void)MyAction2:(id)width
{
   [square setWidth:width];
}

如您所见,方形对象需要具有全局范围。对于我们中的一些人来说,这似乎很容易,或者可能是错误的做法。我浏览了网络,有点找到了 .nib 文件的方法,而不是 .xib 文件。

任何建议将不胜感激。非常感谢。

约翰。

ps:这是我的第一篇文章,请放纵。

4

3 回答 3

3

首先,NIB 文件在所有意图和目的上都与 XIB 文件相同;它只是 XIB 文件的编译版本。

现在,要在 NIB/XIB 中创建从 NSObject 派生的对象,只需将 NSObject 从库窗口拖到文件中即可。然后在 Identity Inspector 上将类更改为您的自定义类。

如果你定义这样的方法:

- (IBAction)myAction:(id)sender

您将能够在 Interface Builder 中连接它们。

说了这么多,很难说你正在做的事情是否是正确的。在我看来,您应该使用 NSViewController 子类,因此请查看相关文档。

您还应该确保您了解视图、控制器和模型对象是什么。这方面的文献很多。

于 2009-06-08T04:50:24.823 回答
1

如果您创建一个扩展 UIView 的类,那么您可以让您的 xib 的文件所有者实现扩展类。从那时起,只需将一个实例变量添加到正方形的扩展类中。该过程的最后一步是向您的类添加方法以将每个控件绑定到操作。

- (IBAction) pinSelected: (id)sender;

一旦你创建了这些方法(一定要让它们返回 IBAction,它实际上是 void 的别名,但作为对接口生成器的提示)然后你可以通过 File's Owner 将你的控件绑定到方法上(使用 control + drag 来建立关联)。

祝你好运!

于 2009-06-04T14:04:59.690 回答
0

我发现了如何做我需要的东西,而 XIB 文件中没有。尽管上述建议是有效的,但它比我想象的要简单得多。

为了使用方形对象,我只需要引用头文件:

 #import "square.h"

在 SquareUIViewController.h 中并添加对方形对象的引用:

Square *square;

然后在 SquareUIController.m 中,我只需要在执行其他任何操作之前分配/初始化方形对象:

(IBAction)myInit
{
square = [[Square alloc] init];
}

现在我可以使用第一篇文章的方法了,瞧!

ps:批评者,开火!

于 2009-06-10T14:17:56.063 回答