我有一个runthis.h文件,其中有一个标签:
IBOutlet NSTextField *updateStatus;
现在在我的runthis.m文件中,在名为startTest的类中,我使用
-(IBAction) startTest:(id)sender {
[updateStatus setStringValue:@"Testing"];
}
现在,如果我在另一个文件testing.m中为runthis类创建一个对象,然后尝试以下操作:
runthis *testSomething = [[runthis alloc] init];
[testSomething performSelectorInBackground:@selector(startTest:) withObject:nil];
但是我发现从test.m调用标签* updateStatus的UI永远都不会设置为“测试”
如果我直接从runthis.m调用它,那么UI将按预期进行更新。有什么想法吗?谢谢。
最佳答案
除非runthis
位于单独的笔尖中,否则不会自动连接插座,您必须将其作为参考传递。在testing
中,您必须连接文本字段,然后将其传递给runthis
,例如:
[testSomething setStatusField:updateStatus];
或者,您可以从
testing
对象(称为委托)创建对runthis
对象的引用,并让testing
直接更新UI。那就是我会使用的方法。关于cocoa - 从另一个类调用时,NSTextfield无法更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8748210/