NSTextField没有响应

时间:2012-11-26 00:53:35

标签: objective-c nstextfield

我在代码中创建了一个NSTextField:

.h:

@interface AppDelegate : NSObject <NSApplicationDelegate>
{
 IBOutlet NSTextField *numberOfConnectionsTextField;
}

@property (nonatomic, retain) NSTextField *numberOfConnectionsTextField;

.m:

@synthesize numberOfConnectionsTextField;

我在这里改变了字段的值:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    [numberOfConnectionsTextField setStringValue:@"0"];

}

值成功更改。但是,当我尝试更改此处的值时:

- (void)connectionNumber:(NSString *)number {

    [numberOfConnectionsTextField setStringValue:number];
    NSRunAlertPanel(@"", number, @"", @"", @"");

}

NSTextField没有改变。但是,NSRunAlertPanel确实触发了'number'字符串。

有什么想法吗?我似乎无法找到我做错的事情......

2 个答案:

答案 0 :(得分:0)

使用self.numberOfConnectionsTextField然后单独使用变量名numberOfConnectionsTextField可能更安全。当我第一次学习目标c时,这种错误发生在我身上。有些IBOutLet在一段时间后没有了。

尝试将self.variablename用于strong,合成变量

答案 1 :(得分:0)

你的代码看起来很不错。没有错误,第一个原因是始终没有将插座连接到对象,但是你可以在applicationDidFinishLaunching:中进行更改,所以这不是问题。

但你没有提到过“ - (void)connectionNumber:(NSString *)”这是同一个类吗?或者你在另一个类中创建了相同的iboutlet而错过了什么?

或者您手动释放了插座编号OverConnectionsTextField?请检查它是否为空?喜欢

if(numberOfConnectionsTextField){ 
    NSLog(@"Still exist") 
}

另一个原因可能是,您从哪个方法调用“ - (void)connectionNumber:(NSString *)”,很多时候看到人们从init调用set / get of outlet。

如果你正在做的每件事都正确,请评论......