我正在尝试使用XCode 3.2.3创建一个简单的Cocoa应用程序。在界面构建器中,我添加了NSTextField和NSButton。当我按下按钮时,我希望它清除文本字段中的任何内容。
我创建了一个名为AppController.h的新类。这是内容:
#import <Foundation/Foundation.h>
@interface AppController : NSObject {
IBOutlet id textView;
}
- (IBAction) clearText: sender;
@end
AppController.m看起来像这样:
#import "AppController.h"
@implementation AppController
- (IBAction) clearText: sender
{
[textView setString: @" "];
}
@end
我将按钮连接到clearText,将文本框连接到textView。
程序编译没有错误并运行。但是当我按下按钮时,没有任何反应。那是为什么?
答案 0 :(得分:4)
将id
用于IBOutlet
是不好的做法。使用
IBOutlet NSTextView* textView;
代替。
请使用调试器检查,或者在NSLog(@"foo!");
之前放置[textView setString:@""]
以查看是否真的调用了操作方法。
另一个缺陷是NSTextView
和NSTextField
。这两个是不同的!
前者支持setString:
和setStringValue:
,而后者仅支持setStringValue:
。
您在界面构建器中使用了哪个对象?