我在代码中创建了一个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'字符串。
有什么想法吗?我似乎无法找到我做错的事情......
答案 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。
如果你正在做的每件事都正确,请评论......