Динамическое обновление в представлении - xcode 4/построитель интерфейса

Я новичок в xcode, поэтому, пожалуйста, потерпите меня.

У меня есть метка, которую я установил пустой, и после того, как пользователь нажимает «Перейти», я генерирую случайное слово или число и использую:

self.label.stringValue = "какое-то_слово"

обновить представление. (кстати, я использую MacRuby)

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

Я пробовал такие вещи, как:

100.times do
 num = rand(40)
 self.label.stringValue = num
end

Но это не работает. Я также пробовал .reloadData, но безрезультатно.

Любые идеи о том, как этого добиться?


person A4J    schedule 24.05.2011    source источник
comment
Вы не можете этого увидеть, потому что это, вероятно, происходит слишком быстро. Почему бы просто не установить таймер с очень маленьким интервалом, который вызывает метод, который перебирает имена, которые вы хотите использовать?   -  person sudo rm -rf    schedule 25.05.2011
comment
Я пытался добавить 'sleep 1' просто чтобы проверить, работает ли это, но это не так :/ Например, self.label.stringValue = Yoooooooo!; спать 5; self.label.stringValue = num — это то, что вы имели в виду?   -  person A4J    schedule 25.05.2011
comment
Я не знаком с MacRuby, поэтому ничем больше не смогу вам помочь; Мне жаль.   -  person sudo rm -rf    schedule 25.05.2011
comment
Спасибо за попытку в любом случае. Кстати, как бы вы сделали это в Objective-C? (Возможно, я смогу портировать код)   -  person A4J    schedule 25.05.2011
comment
Спасибо (хотя я не смог его портировать - Objective-C сбивает с толку, лол)   -  person A4J    schedule 25.05.2011


Ответы (1)


Чтобы не оставлять вопрос открытым, из списка рассылки Macruby:

def drawWord(sender)
if !next_word
 self.timer.invalidate
 return
end
self.label.stringValue = next_word
self.setNeedsDisplay true
end

def next_word
...
end

self.timer = NSTimer.scheduledTimerWithTimeInterval( 1/20.0,
target:self, selector:"drawWord:", userInfo:nil, repeats:true)
person TechZen    schedule 27.05.2011