将变量值指定给Objective-C中的NSTextFields

将变量值指定给Objective-C中的NSTextFields,objective-c,nstextfield,Objective C,Nstextfield,我对Objective-C完全是个新手,有PHP背景,有各种BASIC方言,还有一点C/C++。虽然我觉得在Interface Builder中设置基本窗口的方法很好,但是我在操作文本字段的内容时遇到了问题,特别是从它们调用值并向它们发送值 我使用的是一个基本的Xcode Cocoa应用程序模板,没有额外的功能,并创建了一个名为“controller.h”的Cocoa类。在Interface Builder中,我创建了一个窗口,其中包含一个安全文本字段、一个基本的NSTEXT字段和一个提交表单的

我对Objective-C完全是个新手,有PHP背景,有各种BASIC方言,还有一点C/C++。虽然我觉得在Interface Builder中设置基本窗口的方法很好,但是我在操作文本字段的内容时遇到了问题,特别是从它们调用值并向它们发送值

我使用的是一个基本的Xcode Cocoa应用程序模板,没有额外的功能,并创建了一个名为“controller.h”的Cocoa类。在Interface Builder中,我创建了一个窗口,其中包含一个安全文本字段、一个基本的NSTEXT字段和一个提交表单的按钮。我的控制器类如下所示:

//controller.h
#import <Cocoa/Cocoa.h>

@interface controller {
    IBOutlet id userInput;
    IBOutlet id userOutput;
}
- (IBAction)submitButton:(id)sender;
@end

//controller.m
#import "controller.h"

@implementation controller
- (IBAction)submitButton:(id)sender {
    NSBeep();
    [userOutput setStringValue: userInput];
    [userInput setStringValue:nil];
}
@end
//controller.h
#进口
@接口控制器{
ibid用户输入;
ibid用户输出;
}
-(iAction)submitButton:(id)发送方;
@结束
//控制器
#导入“controller.h”
@执行控制器
-(iAction)submitButton:(id)发送方{
NSBeep();
[userOutput setStringValue:userInput];
[userInput setStringValue:nil];
}
@结束
我将userInput链接到安全文本字段,将userOutput链接到NSTextField。submitButton链接到按钮。根据我对工作原理的理解,这应该将userInput中的安全文本的值分配给userOutput,从而更新NSTextField中显示的内容,然后重置该字段。嘟嘟声是用来告诉我函数是否被调用的


但是,嘟嘟声没有响,这意味着什么也没有发生。Interface Builder构建了这些文件,因此我知道它们已被正确定义并连接到正确的位置。如何修复它,使iAction执行并将值发送到需要的位置?

查看是否调用它的更有效方法是设置一个断点(双击编辑器左侧的边栏)并调试应用程序。第一个建议是经常检查你的连接是否正常

此外,您可能希望使用以下行:

[userOutput setStringValue:[userInput stringValue]];
(请注意,
-stringValue
继承自,就像
-setStringValue:
是一样。)



编辑:这可能有助于确保您实际实例化了控制器对象。您可以向控制器添加一个
-awakeFromNib
方法,并在其中放置一个断点,以查看情况是否如此。(请参阅)如果没有调用该方法,则IB中指定的连接也不会被建立。

感谢您帮助解决文本字段问题并指出如何使用中断!有没有关于IBAction为什么没有激活的见解?没问题。我用另一个想法更新了我的答案。IB相关的问题很难在不出现在屏幕前的情况下进行调试,但我希望这会有所帮助。好吧,我在类定义中对如何定义和连接插座和操作进行了研究和修补,现在一切似乎都正常了!awakeFromNib已激活,因此我删除了该行,并将按钮函数设置为[userOutput setStringValue:[userInput stringValue];它正在做它现在应该做的事情。谢谢!