Objective c 仅在返回IBOutlet时,才在IBOutlet内使用NSTextField stringValue更新标签

Objective c 仅在返回IBOutlet时,才在IBOutlet内使用NSTextField stringValue更新标签,objective-c,nstextfield,iboutlet,Objective C,Nstextfield,Iboutlet,将很高兴获得以下方面的帮助 我的代码片段: - (IBAction)Testing:(NSButton *)sender { Status.stringValue=@"ABC"; sleep(10); // ... } 其中状态在.h文件中定义如下: @property (strong) IBOutlet NSTextField * Status; //视图控制器中的标签与名为Status的类之间的引用出口名称 问题是视图中的标签只有在测试调用结束后才被更新。 (在睡

将很高兴获得以下方面的帮助

我的代码片段:

- (IBAction)Testing:(NSButton *)sender {
    Status.stringValue=@"ABC";
    sleep(10);
    // ...
}
其中状态在
.h
文件中定义如下:

@property (strong) IBOutlet NSTextField * Status;
//视图控制器中的标签与名为Status的类之间的引用出口名称

问题是视图中的标签只有在测试调用结束后才被更新。 (在
睡眠(10)
完成后。 我希望它能即时更新(
Status.stringValue=@“ABC”


你知道怎么做吗?

首先,我想试试这个:

请参见以下问题:

基本上,您可以这样更改按钮文本:

-(IBAction)startSomething:(id)sender {
    [sender setTitle:@"ABC" forState:UIControlStateNormal];
}
我会像这样更新标签文本:

Status.text=@"ABC";
其次,如果这不起作用,我会尝试将任务分为不同的方法,例如:

-(IBAction)Testing:(NSButton *)sender {
   //change label text here

   //run another method after delay
   [self performSelector:@selector(methodtoberun) withObject:self 
      afterDelay:10.0 ];

}

sleep
命令有什么特别的原因吗?它阻塞了用户界面,所以你不想这样使用它。我想看看标签是在应该更新的地方更新,还是只在iAction调用结束时更新。但是我还需要添加一些“wait”,因为我计划在后台进行一些测试。你建议继续吗睡眠以外的另一种方式?请阅读有关UIKit runloops和view drawing cycle的内容,了解其工作原理。文本字段将在iAction完成后更新,因为此时系统有机会处理事件-如果通过执行紧密循环或睡眠等操作阻止UI,则系统将无法更新UI。不是你在等待什么,因为UI通常是事件驱动的。“文本字段将在iAction完成后更新”现在这是重要的数据点。这是一个在后台运行一些测试的Mac OS应用程序。我想做的是在按下按钮后,我会在视图控制器中获得代码执行阶段的指示。(这是一个运行几秒钟的测试)谢谢。我希望更改标签而不是按钮的名称。(我在视图控制器中有一个按钮和一个标签)。我尝试使用您提到的文本:Status.text=@“ABC”;但我得到了这个错误:在类型为“NSTextField”的对象上找不到属性“txt”。知道怎么回事吗?可以尝试:Status.insertText(“”)也尝试过将操作分为两种方法吗?请发布
NSButton
NSTextField
兼容代码。