我有一个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/

10-10 20:45