以下の最初の提案で更新されましたが、まだ問題が発生しています: 私は開発者からいくつかの iPhone アプリを継承しましたが、現在、私はほとんどスキルのない開発者です。これらの iPhone アプリの 1 つをユニバーサル (iPhone と iPad) に変換しようとしていますが、もうすぐそこまで来ています。ただ 1 つの問題があります。iPhone ではビューが正しく消えますが、iPad では消えません。ここの誰かが私を助けてくれることを願って、私はこの 1 つの問題 (できればかなり簡単な解決策があることを願っています) に 3 日以上苦労してきました。:)
これの一部は古いコードだと言われましたが、それは本当かもしれませんが、この 1 つの問題がアプリ ストアへの提出を妨げているため、大規模なリファクタリングや再設計のソリューションは今のところ避けたいと思います。では、何が起こっているのか (この投稿のファンキーな書式設定について事前にお詫びします。なぜコードがすべてコーディング形式で行われていないのか、ファンキーな箇条書きの番号付けなどではないのかわかりません):
アプリは、ゲームプレイを開始する「再生」ボタンがあるメイン ビュー コントローラー (MyAppViewController) から開始します。[再生] ボタンがタップされると、次のコードはゲームプレイ ビュー コントローラーをインスタンス化します。
mainGameViewControllerIpad = [[MainGameViewControllerIpad alloc] initWithNibName:nil bundle:nil]; [self.view addSubview:mainGameViewControllerIpad.view];
これにより MainGameViewControllerIpad ビューが開き、ユーザーはゲームをプレイします。
ゲーム ラウンドが終了すると、MainGameViewControllerIpad のコードは次のことを行います。
GameStatsViewControllerIpad *gameStatsViewControllerIpad = [[GameStatsViewControllerIpad alloc] init]; [gameStatsViewControllerIpad setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [self presentModalViewController:gameStatsViewControllerIpad アニメーション:YES];
[self.view addSubview:gameStatsViewControllerIpad.view];
[gameStatsViewControllerIpad setStatsDisplay];
これにより、Game Stats ビューが開き、ユーザーは今プレイしたラウンドでの結果を知ることができます。つまり、イントロ画面ビューがあり、そのサブビューとしてゲームプレイ ビュー コントローラーがあり、ゲームプレイ ビューのサブビューとして統計画面があります。これは、iPhone と iPad の両方で正常に動作します。
だから、ここで物事が奇妙になります:
- ユーザーが統計の表示を終了したら、統計ページの「完了」ボタンをタップすると、次のコードが実行されます。
[自己却下ViewControllerAnimated:YES完了:nil]; [セルフ ビュー リリース];
ここに問題があります: iPhone では、これにより Stats ビューが閉じられます。Stats ビューは MainGameViewController のサブビューであるため、そのビューも消え、ユーザーは MyAppViewController に返されると思います。正解です。
ただし、iPad では、上記のコードを実行するとすぐに Stats ビューが閉じられますが、それがなくなると、MainGameViewController ビューがまだ表示されていることがわかります。つまり、iPhone では、上記のコードによってサブビューが閉じられ、コンテナ ビューですが、iPad では親/スーパー ビューを閉じません。
MainGameViewController を iPad でも動作させる方法について、かなり簡単な提案はありますか? 洞察/提案をお寄せいただきありがとうございます!