Проблема в том, что вы блокируете основной поток в цикле for
, и обновления основного интерфейса происходят в основном потоке.Цикл выполнения основного потока будет вращаться (и, следовательно, будут выполняться обновления пользовательского интерфейса) после завершения выполнения метода, содержащего этот цикл for
.
Если вы хотите обновлять это текстовое поле каждую секунду, вам следует использоватьтаймерНапример, учитывая, что otherWinController
является переменной экземпляра, объявите свойство counter
в своем классе и:
otherWinController = [[NotificationWindowController alloc] init];
self.counter = 0;
[otherWinController showMessage:[NSString stringWithFormat:@"%d", self.counter]];
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(updateCounter:)
userInfo:nil
repeats:YES];
В том же классе реализуйте метод, который вызывается всякий раз, когда запускается время:
- (void)updateCounter:(NSTimer *)timer {
self.counter = self.counter + 1;
[otherWinController showMessage:[NSString stringWithFormat:@"%d", self.counter]];
if (self.counter == 9) {
[timer invalidate];
// if you want to reset the counter,
// self.counter = 0;
}
}