2011-02-06 3 views
2

obj-cとcocoaの新機能で、私の最初の(mac os x)アプリとしてシンプルなゲームに取り組んでいます。 Iメニュービューとゲームビューを持っている:1つのビュー内のアクションを閉じて別のビューを開くにはどうすればよいですか?

MenuView.h /メートル
MenuViewController.h /メートル
GameView.h /メートル
GameViewController.h /メートル

私はメニューになりたいですデフォルトで表示され、再生ボタン(MenuViewにある)がクリックされると、メニューが表示され、ゲームが表示されます。私は行動やアウトレットを理解していますが、私はどこから始めるべきか分かりません。どんな助け?どうにかして私のMainControllerとMenuViewControllerの話をする必要があるようですね。

答えて

1

ピーターHosey、

あなたが「メイン」ビューコントローラの一種としてMenuViewControllerを見ている場合は、再生ボタンがクリックされた瞬間に、あなたはGameViewControllerのインスタンスを初期化することができます:

- (IBAction)gameButtonClicked { 

    GameViewController *game = [[GameViewController alloc] init]; 

    // we put the game view as the MenuViewController's view 
    [self setView:game.view]; 
    [game release]; 

} 

もちろん、「GameViewController.h」をインポートしてそれにアクセスする必要があります。

+0

実際に私は別のMainControllerを持っています。私は全体のメニューを行って、ゲームに置き換えて欲しい。自分のMenuViewControllerを所有者のMainControllerとどのように通信させるかはわかりません。 – tybro0103

1

同じウィンドウで同じサイズにする場合は、両方のビューをタブなしのタブ表示にすることができます。タブを切り替えて、どのビューが表示されているかを切り替えます。

もう1つの方法は、それらを異なるウィンドウに配置し、それぞれのビューコントローラではなくウィンドウコントローラを使用することです。とりわけ、これは、メニューウィンドウのサイズを乱すことなく、ゲームウィンドウをユーザがサイズ変更することを容易にする。

+0

ええ、私は同じウィンドウを使用したい...それは述べているはずです。タブレスタブの表示はうまくいくが、ビューの1つからイベントを取得してタブビューを別のビューに切り替えるにはどうすればよいですか? – tybro0103

+0

アクションメッセージに応答するコントローラ(関連する特定のビューのコントローラである必要があります)は、タブビューとそのウィンドウを所有するコントローラにメッセージを送信し、メッセージをタブビューに送信してタブを切り替える必要があります。 –

+0

さて、MainControllerがMenuViewControllerのインスタンスを作成するとしましょう。私は、menuViewControllerのメソッドを呼び出す方法を理解していますが、私のmenuViewControllerからMainControllerのメソッドを呼び出すにはどうすればいいですか? – tybro0103

1

MenuViewControllerを呼び出してGameViewControllerを処理するようにしたいので、私はラファエルが言ったことと同様のものを提案します。 GameViewControllerのインスタンスをInterface Builderファイルに入れて、隠してみてください。 「Play」ボタンを押してゲームを起動すると、GameViewControllerを前面に出して見えるようにするだけです。それは少し不器用ですが、それは動作します。あなたのメニューに関するすべてのボタンとインタラクションを隠すことを忘れないでください。あなたは、ゲームをプレイするときにハイスコアのリストを誤ってアクティブにしたくない!

また、ユーティリティアプリケーションを調べることをおすすめします。 (これらは、新しいプロジェクトを作成するときに与えられるテンプレートタイプの1つです)。それらは、2つの別個のView Controllerを切り替えるために構築されており、探しているものかもしれません。

関連する問題