标签字符串未设置

时间:2012-05-09 17:13:12

标签: objective-c cocoa

这适用于Mac应用程序,'setText'适用于iOS

我通常填写AppDelegate类中的所有代码,但我正在尝试更改它,我认为这就是为什么我遇到一些基本的问题。

我创建了一个名为Calculate的新NSObject类,并创建了一个Label和TextField。我已将Label连接到Calculate类,作为名为'summaryLabel'的插座。

在实现类I中,然后将标签设置为:

[summaryLabel setStringValue:@"TEST"];

什么都没发生!

我不知道为什么,但就像我说我正在尝试不同的课程所以我确定某些内容没有正确连接。有没有人有任何想法?

先谢谢大家。

1 个答案:

答案 0 :(得分:1)

我猜你有Calculate班的两个实例。您可能已经在NIB中实例化了一个,这就是您连接插座的方式。然后,您可能使用[[Calculate alloc] init]之类的东西在代码中实例化另一个。这是一个不同的对象。因为它不是来自NIB的那个,它的出口没有连接任何东西。

您想拥有一个实例。如果它真的需要连接到NIB的东西,那么它通常需要在NIB中。 (NIB可以有一些代理对象,比如文件所有者,它们在NIB中不是实例化,但是你可以将它们连接起来,当加载NIB时,这些连接将连接到真实对象。 )

如果您还需要一种方法来引用NIB中的实例,那么您需要从其他东西(可能是您的应用委托)到该实例的插座。


更新

行。因此,您在NIB中有一个Calculate对象。这是一个真正的“冻干”对象。加载NIB时,将重构该对象并设置其连接。

您还可以通过执行类似Calculate的操作单独在代码中实例化[[Calculate alloc] init]对象,对吗?那就是创建一个单独的对象。它不是NIB中的那个,并且您在NIB中建立的连接不会影响它。因此,它的summaryLabel实例变量只是nil

您需要选择一种实例化对象的方法并坚持下去:

选项1)您坚持使用NIB中的Calculate对象。因此,删除代码中您分配和初始化的部分。相反,只需引用加载NIB时创建的现有文件。你需要一个参考。因此,在您的应用委托上创建一个插座,指向它并在NIB中连接它。

选项2)您坚持使用在代码中创建的Calculate对象。所以,从你的NIB中删除一个。您在代码中创建的对象没有与标签的连接,因为它不是来自NIB。因此,您必须在代码中设置与标签的连接,就像您在代码中创建它一样。您需要参考标签。您可以向应用程序委托添加插座并将其连接到标签。然后,您的应用代理可以calculateObject.summaryLabel = summaryLabel;告诉Calculate对象已创建的有关该标签的内容。