0

私のiPhoneアプリには、HomeViewControllerとContentViewControllerがあります。NSUserDefaultsを使用してContentViewControllerに値を保存しています。保存された値に基づいて、アプリの再起動時にHomeViewではなくContentViewをロードします。NSUserDefaultsに値がない場合は、HomeViewが表示されます。

HomeViewにはいくつかのボタンがあります。これはこのようなものです。各ボタンは本用なので、contentViewではすべてのページ番号(ContentViewのスクロールビューの下部)が表示されます。ページ番号をクリックすると、上記のContentViewのラベルのテキスト。ユーザーがcontentViewでアプリを閉じると、ページ番号とブック番号が保存されます...ユーザーがホームボタンをクリックすると、すべての情報が削除されます。NSUserDefaultsをチェックするHomeviewimで、値が含まれている場合は、その本の正確なページが次のコードで表示されます。

//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];
    }
}

しかし、それはホームビューを表示しています。

4

1 に答える 1

1

viewDidLoadの代わりに、以下に示すメソッドviewDidAppearを使用してみてください

- (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];
  }
}
于 2010-07-07T21:01:27.023 に答える