从另一个类调用时,NSTextfield没有更新

时间:2012-01-05 19:02:37

标签: cocoa uilabel nstextfield

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

但是当我从testing.m调用它时,我发现标签* updateStatus的UI永远不会被设置为“Testing” 如果我直接从runthis.m调用它,那么UI会按预期更新。有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

除非runthis位于单独的笔尖中,否则它的插座不会自动连接,您必须将其作为参考传递。在testing中,您必须连接文本字段,然后将其传递给runthis,如:

[testSomething setStatusField:updateStatus];

或者您可以从testing对象(称为委托)创建对runthis对象的引用,并让testing直接更新UI。这就是我要用的方法。