这个Cocoa代码有什么问题?

时间:2010-07-06 03:00:06

标签: cocoa

我正在尝试使用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。

程序编译没有错误并运行。但是当我按下按钮时,没有任何反应。那是为什么?

1 个答案:

答案 0 :(得分:4)

id用于IBOutlet是不好的做法。使用

      IBOutlet NSTextView* textView;

代替。

请使用调试器检查,或者在NSLog(@"foo!");之前放置[textView setString:@""]以查看是否真的调用了操作方法。

另一个缺陷是NSTextViewNSTextField。这两个是不同的! 前者支持setString:setStringValue:,而后者仅支持setStringValue:。 您在界面构建器中使用了哪个对象?