1

Xcode でゲームを作成し、それにメニューを追加することにしました。メニューは最初の読み込みビューなので、変更しました

self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];

に:

self.viewController = [[[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil] autorelease];

今、私のゲームがあるビューは次のとおりです: ViewController.m そしてメニューから私はそこに行きます:

-(IBAction)gogame:(id)sender {
UIViewController *Game = [[UIViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:Game animated:YES];}

ViewController.ma に名前を付ける必要があったため、.h と .m で次のように変更しました。

.h の @interface ViewController から @interface GameViewController へ

および @implementation ViewController から .m の @implementation GameViewController へ

これで、メニュー「gogame」のボタンを実行して、ボタンをクリックすると、メニューから黒い画面に移動しますが、クラッシュなどはありません。ステータスバーと黒い画面のみが表示されます。xCode が私に与える唯一の問題は、アプリ デリゲートにあります。「MenuViewController *」から「GameViewController *」に割り当てられている互換性のないポインター タイプです。

なぜこれが機能しないのかわかりません。誰かが私に説明して、これを解決する方法を教えてくれることを願っています。ありがとう

4

1 に答える 1

1

UIViewController だけでは役に立ちません。動作を追加するために提供されているため、メソッドでは次のようになります。

このメソッドのバージョンは次のとおりです。

-(IBAction)gogame:(id)sender {
    UIViewController *Game = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:Game animated:YES];
}

フレームワークが提供する UIViewController を提示して、まさにあなたが指示したことを実行しています。追加の動作やカスタム ビューは追加していません。

現在のコード設定を完全に解釈するのに問題がありますが、新しいクラス GameViewController が表示したいものであるように思われるので、次のように変更します。

-(IBAction)gogame:(id)sender {
    GameViewController *Game = [[[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil] autorelease];
    [self presentModalViewController:Game animated:YES];
}

クラス名の名前変更/リファクタリングに基づいて、コントローラーの xib ファイルの名前がわかりませんでした。それは元の「ViewController」ですか、それとも「GameViewController」に更新しましたか?

警告に関して、どこで GameViewController を作成して割り当てていますか?

于 2012-06-08T23:04:01.107 に答える