Могу ли я вызвать presentModalViewController в viewDidLoad..?

В моем приложении для iPhone у меня есть HomeViewController и ContentViewController. Я сохраняю значения в ContentViewController, используя NSUserDefaults, и на основе сохраненных значений я буду загружать ContentView вместо HomeView при перезапуске приложения. если в NSUserDefaults нет значений, он отображает HomeView.

в HomeView у меня есть несколько кнопок ... это так ... каждая кнопка предназначена для книги, поэтому в contentView все номера страниц (внизу в представлении прокрутки в ContentView) будут отображаться, если я нажму на страницу, нет, она отображает текст в приведенной выше метке ContentView. Если пользователь закроет приложение в contentView, номер страницы и номер книги будут сохранены... если пользователь нажмет кнопку «Домой», вся информация будет удалена. В Homeview я проверяю NSUserDefaults, если он содержит значения, он должен отображать именно эту страницу этой книги, следующий код...

//HomeViewController.m

- (void)viewDidLoad {

    [super viewDidLoad];

    contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil];

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    NSLog(@"...%d,%d,%d",[prefs integerForKey:@"Stage"],[prefs integerForKey:@"Stimulus"],[prefs integerForKey:@"Card"]);

    if(!([prefs integerForKey:@"Stage"] ==0 && [prefs integerForKey:@"Stimulus"] ==0 && [prefs integerForKey:@"Card"] ==0)){


        [contentViewController setCurrentState:[prefs integerForKey:@"Stage"]]; 

        [contentViewController setCurrentStimulus:[prefs integerForKey:@"Stimulus"]];

        [contentViewController setCurrentCard:[prefs integerForKey:@"Card"]];

        [self presentModalViewController:contentViewController animated:YES];
    }
}

но он отображает домашний вид.


person rockey    schedule 07.07.2010    source источник


Ответы (1)


Попробуйте использовать метод viewDidAppear, показанный ниже, вместо viewDidLoad.

- (void)viewDidAppear:(BOOL)animated 
{
  contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil];

  NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

  NSLog(@"...%d,%d,%d",[prefs integerForKey:@"Stage"],[prefs integerForKey:@"Stimulus"],     [prefs integerForKey:@"Card"]);

if(!([prefs integerForKey:@"Stage"] ==0 && [prefs integerForKey:@"Stimulus"] ==0 &&     [prefs integerForKey:@"Card"] ==0))
  {
   [contentViewController setCurrentState:[prefs integerForKey:@"Stage"]];
   [contentViewController setCurrentStimulus:[prefs integerForKey:@"Stimulus"]];
   [contentViewController setCurrentCard:[prefs integerForKey:@"Card"]];
   [self presentModalViewController:contentViewController animated:YES];
  }
}
person Tammen Bruccoleri    schedule 07.07.2010