0

したがって、インターフェイスビルダーを介して mainClass の xib に 1 つの UIview があります。UIIView の IBOutet を作成し、インターフェイス builde で uiview に接続しました。ViewDidLoad メソッドで、このように Interface builder に入れた UIView にサブビューを追加しています

GameScreen *gameScreen = [[GameScreen alloc]initWithNibName:@"GameScreen" bundle:nil];  //the view beind added
[self.gameScreenView addSubview:[gameScreen view]]; //gameScreenView name of UIView

これが何が起こっいるかです - これは 2 つの異なるビルドからの画像です (まだボタンをクリックしていません)。あるビルドではビューが正常にロードされるのを確認できますが、別のビルドでは正常にロードされます (灰色の画面が表示されるだけです)。なぜそれをしているのかわかりません。どうすればこれを修正できますか?なぜそれが起こっているのですか?

以前にここに質問を投稿しましたが、実際には問題を解決できませんでした (質問に書かれているアニメーションの問題ではありません)。

編集:

コードを少しいじった後、UIView は問題ではなく、appdelegate と mainwindow.xib で何かをする必要があります。

助けてくれた人々に感謝しますが、xibsのコピーが重複していたのはばかげた間違いでした

4

2 に答える 2

2

ゲームビュー画面にゲームビューを追加しないでください。あなたが達成しようとしていることで、それは次のように聞こえます:

[self.view addSubview:gameScreen.view];

のほうがいい。

よくわかりませんが。self.gameScreenView が正確に何であるかを詳しく説明する必要があるかもしれません。

于 2012-05-26T21:04:31.973 に答える
1

ここで何か問題があります。ペン先からメインビューを取得するためだけに、まったく新しいコントローラーをロードしているようです。まったく新しいコントローラーとして gameScreen が必要ですか?

NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"GameScreen" owner:nil options:nil];
[self.gameScreenView addSubview:[views objectAtIndex:0]];

これにより、コントローラーが nib をロードする方法を処理するという煩わしさなしに、nib のすべてのビューが配列にロードされます。それはあなたにとってよりうまくいくかもしれません。

于 2012-05-26T20:26:54.450 に答える