从另一个类调用时 NSTextfield 未更新

发布于 2024-12-25 12:21:19 字数 588 浏览 1 评论 0原文

我有一个 runthis.h 文件,其中有一个标签:

IBOutlet NSTextField *updateStatus;

使用 Now 来更新它

-(IBAction) startTest:(id)sender {
        [updateStatus setStringValue:@"Testing"];
}

现在在我的 runthis.m 文件中,在一个名为 startTest 的类中,如果我在另一个文件testing.m 中为 runthis 类创建一个对象,然后尝试 :

 runthis *testSomething = [[runthis alloc] init];
[testSomething performSelectorInBackground:@selector(startTest:) withObject:nil];

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

I have a runthis.h file where I have a label:

IBOutlet NSTextField *updateStatus;

Now in my runthis.m file, in a class called startTest I update this using

-(IBAction) startTest:(id)sender {
        [updateStatus setStringValue:@"Testing"];
}

Now if I create an object for the runthis class in another file testing.m and then try this:

 runthis *testSomething = [[runthis alloc] init];
[testSomething performSelectorInBackground:@selector(startTest:) withObject:nil];

But I find the UI for the label *updateStatus will never get set to "Testing" when I call it from testing.m
If I call this directly from runthis.m, then the UI gets updated as expected. Any ideas why ? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很酷又爱笑 2025-01-01 12:21:19

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

[testSomething setStatusField:updateStatus];

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

Unless runthis is located in a separate nib, it's outlet won't be connected automatically, you'll have to pass it as a reference. In testing you'll have to wire up the text field, then pass it to runthis like:

[testSomething setStatusField:updateStatus];

Or you could create a reference to your testing object from your runthis object (call it a delegate) and have testing update the UI directly. That's the approach I would use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文