2

我在我的代码中创建了一个 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 确实使用“数字”字符串正确触发。

有任何想法吗?我似乎找不到我做错了什么......

4

2 回答 2

0

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

尝试将 self.variablename 用于强大的综合变量

于 2012-11-26T04:30:15.417 回答
0

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

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

还是您手动释放了插座 numberOfConnectionsTextField ?请检查它是否不为空?喜欢

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

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

如果您做的每件事都正确,请发表评论...

于 2012-11-26T04:30:29.783 回答