Синхронизированный вывод текста на iPhone - PullRequest
0 голосов
/ 05 марта 2012

Я создаю приложение, которое отображает случайное слово (ключ из NSDictionary) в UILabel и список связанных слов (NSArray, который является значением отображаемого ключа) в другой UILabel, когда пользователь нажимает кнопку.Например: если пользователь нажимает кнопку, основным словом может быть «Кошка», а в списке будет что-то вроде «лев», «снежный барс», «тигр».

Я бы хотел выполнить циклвывод текста, так что пользователь нажимает кнопку один раз, получает слово и список, наступает временная пауза, а затем слово и список обновляются.Вот метод, который у меня есть до сих пор:

- (IBAction)changeWord:(UIButton*)sender {
        //next line displays the randomly selected NSDictionary key, such as "Cat" in a label
        self.label.text = [self.dictionary selectKey];
        //next two lines displays the value associated with the selected key (an array), such as "lion", "snow leopard", "tiger" in another label
        NSString *labelText = [[NSString alloc] initWithFormat:@"%@", [self.dictionary selectList]];
        self.listLabel.text = labelText;
       }

Очевидно, что он не зацикливается и просто отображает новый вывод для обеих меток при каждом нажатии кнопки.Я думал, что создание цикла for, который повторяет столько раз, сколько имеется словарных ключей, решит половину проблемы:

- (IBAction)changeWord:(UIButton*)sender {

    //next line counts the keys in the NSDictionary
    NSInteger numberOfKeys = [self.dictionary CountKeys];
   for( int index = 0; index < numberOfKeys; index++ ) 
   {
    self.label.text = [self.dictionary selectKey];
    NSString *labelText = [[NSString alloc] initWithFormat:@"%@", [self.dictionary selectList]];
    self.listLabel.text = labelText;
   //need some type of timer here! 
   }

Но мне нужен какой-то таймер, который будет останавливать отображение через регулярные интервалы передего обновили.Вот где я застрял!

У кого-нибудь есть указатели?

Большое спасибо!

1 Ответ

2 голосов
/ 05 марта 2012

Вы можете использовать метод performSelector:withObject:afterDelay\] объекта NSObject:

- (IBAction)changeWord:(UIButton*)sender
{
    [self changeWord];
}

- (void)changeWord
{
    if (musicStopped) return;

    //next line displays the randomly selected NSDictionary key, such as "Cat" in a label
    self.label.text = [self.dictionary selectKey];
    //next two lines displays the value associated with the selected key (an array), such as "lion", "snow leopard", "tiger" in another label
    NSString *labelText = [[NSString alloc] initWithFormat:@"%@", [self.dictionary selectList]];
    self.listLabel.text = labelText;

    // Add this line
    [self performSelector:@selector(changeWord) withObject:nil afterDelay:30.0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...