Обновление метки с использованием NSTextField-stringValue в IBOutlet, происходит только после возврата IBOutlet - PullRequest
0 голосов
/ 06 мая 2020

будет рад получить некоторую помощь в следующем ...

фрагмент моего кода:

- (IBAction)Testing:(NSButton *)sender {
    Status.stringValue=@"ABC";
    sleep(10);
    // ...
}

где Статус определяется в файле .h следующим образом:

@property (strong) IBOutlet NSTextField * Status;

// Имя ссылающегося выхода между Label в контроллере представления и классом с именем Status

Проблема в том, что Label внутри представление обновляется только после завершения тестового вызова. (после того, как sleep(10) будет выполнено. Я хотел бы, чтобы он был обновлен на месте (Status.stringValue=@"ABC";).

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 06 мая 2020

Сначала я бы попробовал это:

См. Этот вопрос о переполнении стека: Изменить текст кнопки из Xcode?

Обычно вы меняете текст кнопки следующим образом:

-(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 ];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...