Как я могу назвать ViewDidAppear только одним разом?

Когда пользователь запускает приложение, я хочу его, показывают stockholm.xib, и Оно делает здесь:

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    NSUserDefaults *startPage =[NSUserDefaults standardUserDefaults];
    NSString *page =[startPage stringForKey:@"page"];
    NSLog(page);

    if(page==nil)
    {
        //Do nothing

    }
    else if ([page isEqualToString:@"Default"])
    {
        //Do nothing
    }

    else if ([page isEqualToString:@"Stockholm"])
    {
        NSLog(@"going to Stockholm");
        Stockholm *Start =[[Stockholm alloc]initWithNibName:nil bundle:nil];
        [self presentModalViewController:Start animated:YES];


    }
    else {
        NSLog(@"HAHA");

}

но когда пользователь закрывает использование stockholm.xib:

[self dismissModalViewControllerAnimated:YES];

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

теперь, как я могу звонить, представление действительно появлялось только однажды? так, чтобы, когда пользователь возвращается из Стокгольма viewDidAppear привычка быть названным? какое-либо другое решение?

спасибо :)

7
задан hafhadg3 14 February 2010 в 02:53
поделиться

1 ответ

Вы можете попробовать переместить все эти функции в метод viewDidLoad: вместо viewDidAppear . Этот срабатывает только один раз. Если у вас нет причины не ...?

РЕДАКТИРОВАТЬ: дополнительный код, чтобы показать, что я имею в виду, в комментарии

в файле .h:

BOOL firstTime;

в файле .m:

-(void)viewDidLoad {
   NSLog(@"viewDidLoad actually fired");
   //...
   firstTime = YES;
}
-(void)viewDidAppear {
   //...
   if(firstTime){
      //show it
      firstTime = NO;
   }
}
14
ответ дан 6 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: