NSTextField для обновления до конца метода - PullRequest
0 голосов
/ 31 августа 2011

так что сделка:

У меня есть ярлык (NSTextField), который я хочу активировать после нажатия кнопки.Эта метка появится, когда программа загружает некоторые файлы wav (поскольку при этом обычно происходит небольшая задержка).Затем я хочу, чтобы он исчез, как только это произошло (и появляется новое представление).

Теперь у меня проблема в том, что это обновление, по-видимому, не происходит, когда я пытался это сделать.Если я не заставлю его исчезнуть в конце, я смогу его увидеть, но только после того, как задержка произошла (сделав это бессмысленным).

В настоящее время я использую:

[label2 setHidden:NO];

Я понимаю, что это произойдет после того, как метод, который я вызвал, завершится (что является проблемой).Любая идея, что я мог бы сделать вместо этого, чтобы метка отображалась, пока программа загружает wavs?

Спасибо, куча !!

1 Ответ

0 голосов
/ 04 сентября 2011

Хорошо, наверное, я решил это сам - надеюсь, это поможет людям.

Поэтому, когда я нажимаю кнопку, я отключаю кнопки и временно заменяю ярлык.Это, однако, происходит только в следующем представлении (поэтому я не уверен, как заставить это произойти в том же представлении).Я отключаю кнопки примерно на 1 секунду, и именно здесь отображается метка.

Вот некоторый код, чтобы показать, что я имею в виду:

- (IBAction)clickedTheButton:(id)sender {
    [button setEnabled:NO];
    [label2 setHidden:NO];
    ...
    //Changes the View
    [self nextMethod];
}

Вид теперь изменился, иэтот метод называется следующим.Это позволяет мне видеть метку.

-(void)nextMethod{
    ...
    [self performSelector:@selector(delayedDisplay:) 
          withObject:@"Hi" 
          afterDelay:1.0]; //delay for 1 second
}

Этот метод затем возвращает их в исходное состояние (поэтому метка скрыта и кнопка снова активируется)

-(void) delayedDisplay:(NSString *)string{
    [button setEnabled:YES];
    [label2 setHidden:YES];
}
...