6

だから私は2つの見解を持っています。アプリを起動すると、1 つのビューが読み込まれます。次に、そのビューのボタンを押すと、別のビューが読み込まれます。

- (IBAction)triggerGame
{

leveldata = [[NSMutableDictionary alloc] init];

[leveldata setValue:@"hide" forKey:@"shootarrow"];

[leveldata writeToFile:[self levelFilePath] atomically:YES];
[leveldata release];


Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate playGame];

}

このアクションは、次のような playGame というデリゲート実装のメソッドをトリガーします。

- (void)playGame {

[levelView.view removeFromSuperview];
[self.window addSubview:[gameView view]];
[UIView commitAnimations];
}

これにより、新しいビューが正常に読み込まれます。次に、まったく同じことを行う別のボタンがありますが、最初のビューに戻ります。そして、それもうまく機能します。あるビューから別のビューに非常に簡単に移動できます。しかし、私が抱えている唯一の問題は、2番目のビューをもう一度ロードしようとすると、viewDidLoadが再度呼び出されないことです。viewDidLoad メソッドで NSLog() を使用してこれをテストしました。

アプリがやりたいことを実行するには、viewDidLoad を再度呼び出す必要があります。ビューを切り替えるときに、ビューが完全にアンロードされていない可能性があると思います。

どんな助けでも大歓迎です。

4

2 に答える 2

9

関数viewDidAppearが必要だと思います。viewDidLoad は、メモリ警告など、何かによってアンロードされない限り、ビューごとに 1 回だけ呼び出されます。viewDidAppear は、そのビューが表示されるたびに呼び出されます。

于 2010-11-08T00:24:07.410 に答える
4

-viewDidAppear: 「ビューが表示されるたびに」が必要です。

于 2010-11-08T00:25:08.080 に答える