iPhone: NSTimer - PullRequest
       24

iPhone: NSTimer

3 голосов
/ 17 июня 2011

У меня есть вопрос ... У меня есть Таймер

 [NSTimer scheduledTimerWithTimeInterval:120                                                              
target:self                                           
selector:@selector(action1:)                                                      
userInfo:nil                                                       
repeats:YES];

Но когда я перехожу на другой экран своего приложения, я хочу изменить селектор ... Как я могу изменить селектор?Я знаю, что могу остановить свой таймер и установить новый, но я не хочу сбрасывать оставшееся время до срабатывания ... Спасибо ....

Ответы [ 3 ]

3 голосов
/ 17 июня 2011

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

Вам нужно будет сделать недействительным этот таймер и создать новый для новой цели.

1 голос
/ 17 июня 2011

Вы можете вызвать универсальный селектор, который, в зависимости от показанной страницы, вызывает другие методы:

    [NSTimer scheduledTimerWithTimeInterval:120                                                              
    target:self                                           
    selector:@selector(selectorDispatcher)                                                      
    userInfo:nil                                                       
    repeats:YES];

и, очевидно, ваш метод selectorDispatcher будет выглядеть примерно так:

    - (void) selectorDispatcher{

         if(pageshown1)
            [self callmethod1];
         else
            [self callmethod2];
    }

Я думаю, что это должно работать ... дайте мне знать!

1 голос
/ 17 июня 2011

Похоже, что селектор неизменен.Я бы обернул эту функциональность в ее крошечный класс методом setSelector.Внутри создайте NSTimer с закрытым селектором.Внутри этого метода вызовите внешний селектор, который был установлен с помощью метода setSelector.

...