Objective c 未设置标签字符串

Objective c 未设置标签字符串,objective-c,cocoa,Objective C,Cocoa,这是针对Mac应用程序的,“setText”是针对iOS的 我通常把所有的代码都塞进AppDelegate类中,但我正试图改变这一点,我认为这就是为什么我在使用如此基本的东西时遇到问题的原因 我创建了一个名为Calculate的新NSObject类,并创建了一个Label和TextField。我已经将标签作为一个名为“summaryLabel”的出口连接到Calculate类 在实现类中,我将标签设置为: [summaryLabel setStringValue:@"TEST"]; 什么也没发

这是针对Mac应用程序的,“setText”是针对iOS的

我通常把所有的代码都塞进AppDelegate类中,但我正试图改变这一点,我认为这就是为什么我在使用如此基本的东西时遇到问题的原因

我创建了一个名为Calculate的新NSObject类,并创建了一个Label和TextField。我已经将标签作为一个名为“summaryLabel”的出口连接到Calculate类

在实现类中,我将标签设置为:

[summaryLabel setStringValue:@"TEST"];
什么也没发生

我不知道为什么,但就像我说的,我正在用不同的类进行实验,所以我确信有些东西没有正确地连接起来。有人知道吗


提前谢谢大家。

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

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

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


更新:

嗯。因此,NIB中有一个计算对象。那是一个真正的“冻干”物体。加载NIB时,将重建该对象并设置其连接

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

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

选项1)您坚持使用NIB中的
Calculate
对象。因此,删除代码中alloc和init一个新的部分。相反,只需引用加载NIB时创建的现有NIB。你需要参考一下。因此,在应用程序代理上创建一个插座,指向它并在NIB中连接它


选项2)坚持使用在代码中创建的
Calculate
对象。所以,从你的笔尖上取下这个。您在代码中创建的对象没有与标签的连接,因为它不是来自NIB。因此,必须在代码中设置与标签的连接,就像在代码中创建标签一样。你需要一个标签的参考。您可以将插座添加到应用程序代理并将其连接到标签。然后您的应用程序代理可以执行
calculateObject.summaryLabel=summaryLabel
告诉它创建的关于标签的
计算
对象。

是否尝试记录标签?你能再提供一点代码吗?在实现中,你试图在哪里设置值,这周围的代码在哪里?@johannellampe我记录了标签id,它返回null,然后似乎你的接线不正确。你可能想再检查一遍。你能不能再发一些代码?您的标签属性以及要设置文本的部分的周围代码?您没有连接您认为连接的内容。我认为我没有实例化NIB,在我的App Delegate类中,我会实例化Calculate类并从中运行方法。正是在该方法中,我设置了标签的文本。这有帮助吗?谢谢你的回复!您说“我已经将标签连接到Calculate类,作为一个名为‘summaryLabel’的出口。”如果NIB中没有
Calculate
对象,这意味着什么?您是如何连接的
summaryLabel
?如果是在代码中,那么更新你的问题以显示代码。Nib中有一个计算对象,我已经给它贴上了标签,我不明白我做错了什么奇妙的,很有道理,最后一个问题,选项1对我来说似乎更可取,但如果我不在Nib中创建对象,我无法连接到Calculate类的插座,如何解决此问题?我真的很感谢你的帮助,谢谢。我在选项2中已经回答了这个问题。因此,您不使用outlets,只使用属性,并且创建对象的代码还负责为其提供对标签的访问权限。或者,它可以让它访问自己,并通过该对象获取标签。