переключение с просмотра 1 на просмотр 2 без нажатия кнопок - PullRequest
0 голосов
/ 29 декабря 2011

Как переключиться с view1 на view 2 без нажатия какой-либо кнопки.На мой взгляд, у меня есть uiimageview и uitextview

С NSTimer я пытаюсь сделать это

в методе viewdidload с помощью следующего кода:

В firstviewcontroller.hfile

@interface FirstViewController : UIViewController 
{
    NSTimer *SwitchingTimer;   
}

В файле firstviewcontroller.m

- (void)viewDidLoad
{
   [super viewDidLoad];
   SwitchingTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self      selector:@selector(SwitchView) userInfo:nil repeats:YES];
}

-(void)SwitchViews:(id)sender

В файле secondviewcontroller.m

-(void) SwitchView
{
SecondViewController *SecondView = [[SecondViewController alloc]
                                    initWithNibName:@"SecondViewController" bundle:nil];
SecondView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:SecondView animated:YES];
[SwitchingTimer invalidate];
self.SwitchingTimer = nil;

}

но ничего не происходит.Может кто-нибудь, пожалуйста, скажите мне, что мне не хватает в моем коде.Буду признателен за помощь.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

В вашем коде есть несколько проблем, которые стоит упомянуть, хотя я не уверен, что они дадут вам решение.

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

Ваш код для метода SwitchView вызывает утечку памяти.Убедитесь, что SecondView выпущен после представления модального представления (в случае, если вы не используете ARC).

Пожалуйста, следуйте стандартным соглашениям об именах.Например: методы и переменные должны начинаться со строчной буквы.

Относительно вашей проблемы, пожалуйста, убедитесь, что имя пера правильное, и вы получаете действительный объект для второго контроллера представления.Вы можете проверить, используя NSLog.Также убедитесь, что вызывается метод Switchview.Попробуйте установить точку останова и убедитесь, что она вызывается.

Другой вариант

Если вы просто хотите переключить представление только один раз, вы можете перейти к другому варианту, который делаетне использовать NSTimer.Для этого вы можете использовать performSelector:withObject:afterDelay:.Это просто еще один вариант для сценария, о котором я говорил выше.

0 голосов
/ 29 декабря 2011

Вам необходимо добавить его в цикл выполнения:

- (void)viewDidLoad
{
    [super viewDidLoad];
    SwitchingTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self      selector:@selector(SwitchView) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer: SwitchingTimer forMode:NSDefaultRunLoopMode];
}

Также вы можете переименовать -(void)SwitchView в -(void)switchViewTimerDidFire:(NSTimer *)timer.Из Документации :

[...] Селектор должен иметь следующую подпись:

- (void)timerFireMethod:(NSTimer*)theTimer

Таймер проходитсам в качестве аргумента этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...