1

私は小さな子供向けのゲームであるかなりシンプルなアプリを持っています。メイン画面と5つの別々のレベルがあります。5つのレベルのうち3つは、複数のVCで構成されており、アクションはその行の最初のVCで行われ、コードは行の最後に到達するまでモーダルセグエを呼び出します。モーダルセグエは、メイン画面へのリンクと呼ばれます。VCが1つしかないレベルは、アクションを実行してから、メインVCに戻ります。

モーダルのアプリのすべてのセグエ。また、すべてのページ(VC)には、押された場合にメインページに移動するホームボタンがあります

これをすべてストーリーボードに設定し、視覚的にはすべて期待どおりに機能しますが、サウンドを追加すると、大きな問題があるように思われることに気付きました。

私が今正しく理解している場合(そしておそらく私は理解していません)、モーダルセグエは実際に現在のVCを新しく要求されたものに置き換えるのではなく、新しく要求されたものを元のVCの上にスライドさせて表示します。

現在、私はメインからレベル1に移動します。レベル1はいくつかのことを行い、タイマーを介して繰り返すいくつかのサウンドを再生します。視覚的にメインに戻ると、レベル1 VCのタイマーによって再生されているサウンドが引き続き再生され、xCdoeによって次のエラーが何度も発生することを除いて、すべて問題ありません。

2013-01-21 22:16:07.901 TTBetaDev[678:c07] Warning: Attempt to present <MainMenuViewController: 0x7e02f40> on <BonusViewController: 0x7ecbfa0> whose view is not in the window hierarchy!

以下は、レイアウトを十分に説明していない場合のストーリーボードのスクリーンショットです。

希望するナビゲーションを可能にするために、これをどのように設定する必要がありますか?ストーリーボードにすでに作成しているものにそれを適用するには、どのような手順を実行する必要がありますか?それとも、ストーリーボードのすべての作業をやり直す必要がありますか?

リンゴのVCドキュメントを試しましたが、Imがやろうとしていることに何が関係しているか理解できませんでした。

誰かが私にこれを説明するのを手伝ってください

ここに画像の説明を入力してください

4

1 に答える 1

1

前後にセグエがあります。これを行うべきではありません。

例: Look と Main と VC 2。

Main から VC 2 へのセグエがあります。これは、Main が VC 2 をモーダル ビュー コントローラーとして表示することを意味します。

VC2 の下のスタック上にあるにもかかわらず、メインがこれを行う場合。

次に、VC2 からメインへのセグエがあります。これは、VC2 が新しい Main を作成し、モーダルでも表示することを意味します。アプリを使い続けると、メインのインスタンスが複数になり、他のすべての VC とメモリ消費量が急増します。

あなたがする必要があるのは、後方に行くすべてのセグエを削除することです。(つまり、VC2 からメインへのようなもの)

次に、VC2 からメインに戻りたい場合は、VC2 を閉じる必要があります。

すなわち

メインで...

//present VC2
[self performSegueWithIdentifier:@"VC2Segue" sender:nil];

//dismiss VC2
[self dismissViewController:vc2ViewControllerInstance];

またはVC2で...

//dismiss VC2 from itself
[self dismissViewController:self];

ただし、主なことは、セグエを使用して後方に移動できないことです。

TL:DR

INTO Main に続くものは何もありません。メインの左側に入るセグエはすべて削除し、適切に処理する必要があります。

于 2013-01-22T08:00:00.103 に答える