0

すべてのコード例を示すことなく、これを簡単に説明します。

これは、viewWillAppearが最初に表示されたときにのみ呼び出されるようになったことはありますか?

私はすべての私の見解でこの問題を抱えています。

例:アプリが起動すると、メインメニューであるStartViewが表示されます。(viewWillAppearが呼び出されます)次に、ナビゲーションコントローラーを表示する1つのボタンを押します(viewWillAppearが呼び出されます)。次に、メインメニューに戻り(呼び出されません)、同じナビゲーションコントローラーをもう一度押すと呼び出されません。

誰かが私をどこかに向けることができれば素晴らしいでしょう、私は今2日からこれを探しています...

また、さらにコードサンプルが必要な場合は、いくつか提供できます。

さらに読むために:

これが私のナビゲーションコントローラーの呼び方です。

PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate];

UIView *newView = [AppDelegate.navigationController view];

[newView setFrame:CGRectMake(320.0f, 0.0f, 320.0f, 480.0f)];
[UIView beginAnimations:@"RootViewController" context:nil];
[UIView setAnimationDuration:0.3];
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
UIView commitAnimations];

[AppDelegate.window addSubview:newView];
[AppDelegate.window makeKeyAndVisible];

そして、それが私のメニューを表示する方法です:

PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate];

UIView *newView = [AppDelegate.startViewController view];

newView setFrame:CGRectMake(-320.0f, 0.0f, 320.0f, 480.0f)];
UIView beginAnimations:@"StartViewController" context:nil];
UIView setAnimationDuration:0.3];
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
[UIView commitAnimations];

[AppDelegate.window addSubview:newView];
[AppDelegate.window makeKeyAndVisible];

どうもありがとう。

4

2 に答える 2

1

UINavigationControllerDelegateをNavControllerに実装して、viewWillAppear:メッセージを伝達することができます。次のようなメッセージを実装できます。

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([viewController respondsToSelector:@selector(viewDidAppear:)]) {
        [viewController viewDidAppear:animated];
    }
}

これはviewDidAppearであり、ViewWillAppearバージョンではありませんが、基本的に同じであることに注意してください。

ただし、これを行う必要があるという事実は、コントローラー/ビューコードに他の何かが間違っていることを示している可能性があり、質問に答えるためのより多くのコンテキストを提供するために質問を再検討することをお勧めします。特に、あなたが私たちに提供しているコードの外のどこかで、Navコントローラーの通常のようにビューコントローラーをプッシュおよびポップしていると仮定しています。

于 2010-03-30T17:34:57.967 に答える
1

viewWill / DidAppear:UINavigationControllerまたはUITabBarController(または実際にはシステムが提供するviewControlller管理クラス)を使用してビューを操作する場合にのみ呼び出されます。これを手動で行っている場合(2番目のコードスニペットで行っているように、これらのメッセージは送信されません。

于 2010-03-30T17:22:47.177 に答える