2012-01-07 30 views
0

私はストーリーボードモードで作成されたユニバーサルアプリケーションを持っています。現在の方向に自動的に回転するように設定されています。 iPadを回転させると、それは次のコードを通過するはずですが、黒い画面が表示されます。iPad回転画面の黒い画面

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    self.view = landscape; 
    self.view.transform = CGAffineTransformMakeRotation(deg2rad*(90)); 
    self.view.bounds = CGRectMake(0.0, 0.0, 1024.0, 748.0); 
} else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
    self.view = landscape; 
    self.view.transform = CGAffineTransformMakeRotation(deg2rad*(-90)); 
    self.view.bounds = CGRectMake(0.0, 0.0, 1024.0, 748.0); 
} else { 
    self.view = portrait; 
    self.view.transform = CGAffineTransformMakeRotation(0); 
    self.view.bounds = CGRectMake(0.0, 0.0, 768.0, 1004.0); 
} 
} else { 

} 
} 

なぜこれらすべての問題が発生していますか?何が起こっているのですか?これをどのように修正できますか?

EDIT:デバッグコンソール結果:po [landscape recursiveDescription] 私はこの応答で終わる:なしオブジェクトの説明を印刷することはできません

EDIT:黒い画面がまだUIViewsがリンクされているにもかかわらず表示されますそのアウトレットに。

+0

メソッドにブレークポイントを設定します。ブレークポイントがヒットしたら、デバッガのコンソールで 'po [landscape recursiveDescription]'を実行します。あなたの質問に出力を貼り付けてください。それから 'po [portrait recursiveDescription]'を実行します。あなたの質問に出力を貼り付けてください。 –

+0

@robmayoffこれを入力すると、po [landscape recursiveDescription]の後に(gdb)、この応答が返されます。Nilオブジェクトの説明を印刷できません。 2番目の条件文の後に開始するすべての行で試しました。私はデバッグコンソールに慣れていないので、私はこの権利をしているかどうかはわかりません。 –

答えて

2

landscape変数はゼロです。だからこそあなたは黒い画面を表示しています。あなたはそれをUIViewに設定する必要があります。

+0

IBOutletsと@ Prop/Synthを使用する私はランドスケープアウトレットとしてUIViewを設定しましたが、それでも黒い画面を表示します –

+0

'willRotateToInterfaceOrientation:'が呼び出されたときに 'landscape'がnilでないことを確認しましたか? '? –

+0

上記のスニペットのすべての行に行き、そのコマンドをデバッガに入力して同じ結果を得ました。私はビュー間のコミュニケーションに問題があると思う、私はテストアプリを作ったと同じことが起こった。 –