1

モーダルトランジションがどのように機能するかについて真剣に理解していないので、最も簡単な答えをここから除外しないでください。

ストーリーボードに設定された独自のビュー コントローラーを持つ 2 つのビューがあります。メインメニューのボタンは、他のビューにつながります。このトランジションは、Ctrl キーを押しながらクリックしてモーダル トランジションを選択するだけで設定できます。また、他のビューからメインメニューに戻るボタンもあり、同様に設定されています。

これらのトランジションの理解を深めるために、メインメニューがロードされたときにサウンドを再生することを決定しましたが、最初に実行を押したときだけであり、他のビューに戻るボタンを押したときは再生しません。メニュービュー。

私のメニュービューには、プライベートプロパティBOOLがあります

@interface MainMenuViewController ()
@property BOOL menuSoundPlayed;
@end

そして私のviewDidLoad ...

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (!self.menuSoundPlayed){
        //sound setup code omitted for clarity
        AudioServicesPlaySystemSound(mySound);
        self.menuSoundPlayed = YES;
    }
}

メインメニュービューが読み込まれるたびにメニューサウンドが再生される理由を誰かが理解するのを手伝ってもらえますか? menuSoundPlayed が実際には初期化されないことは認めますが、どこでそれを行うかさえわかりません。

補足: Apple がストーリー ボードのような便利な機能をすべて提供してくれるのは気に入っていますが、これらの背後にあるすべてのコードを簡単に確認できるようにしてほしいと思っています。 .

とにかく、ありがとう!

4

1 に答える 1

1

私はもう少し調査を行い、自分の質問に答えました。

以前の状況(質問で説明)では、コードがありました

[self performSegueWithIdentifier:@"mainMenuSegue" sender:sender];

コメンターが説明したように、メインメニューの新しいインスタンスが開始されます。

私が望んでいたのは、既に作成されたメイン メニュー インスタンスに戻ることでした。

これを行うには、次のコードが必要です (明らかに独自の完了ブロックを使用します)。

[self dismissViewControllerAnimated:YES
                         completion:^{
                             NSLog("view dismissed");
                         }];
于 2013-01-12T03:34:18.970 に答える