2012-01-20 6 views
0

私は2つのビューAとBを持っています。 AはBにプッシュし、BはAにポップバックします。 Aでは、 "shouldAutorotateToInterfaceOrientation"を使用して、回転をPortraitとPortraitUpsideDownに制限します。プッシュする前にビューを回転しますか?

Bでは、回転をLandscapeLeft/Rightに制限します。

ただし、デバイスの初期の向きに関係なく、Bを表示するには、デバイスを回転するまでビューBもポートレートを表示します。それ以降は、自動的にLandscapeLeft/Rightに回転します。

私がこれまで読んできたすべてのものはshouldAutorotateToInterfaceOrientationについて語っていますが、私はその設定を正しく行っています(少なくとも私はそう思っています)。

ビューBは常にランドスケープで開始できますか?

ありがとうございました。

+0

ボタンをタップした後にユーザーがデバイスを回転させるので、デザインを再検討する必要があります。 – Costique

+0

@Costique私はアプリのデザインをそのまま保ちたいと思います。 1つを除くすべてのビューは同じ方向に開始されます。動画を再生するときのYouTubeアプリのようなもの。 – wayneh

答えて

1

Bという名前のビューコントローラを常にランドスケープにする最も簡単な方法は、ナビコントローラにプッシュするのではなく、モーダルで表示することです。これは、YouTubeアプリがインターフェースを回転させるために使用する方法のようです。

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:nextVC animated:NO]; 
UIViewController *cont = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:cont animated:NO]; 
[cont dismissModalViewControllerAnimated:NO]; 

は信じられないかもしれませんが、それは実際に素敵な効果をもたらす:あなたは絶対にビューをプッシュする必要がある場合は

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:nextVC animated:YES]; 

あなたはこのような何かを行うことができます。

+0

完璧に動作します!私はプッシュバリアント(コードの第2ブロック)を使用して、残りのコードを同じにすることができました。本当にありがとう! – wayneh

+0

@wayneh嬉しいことに、この回答があなたが探していたものであれば、それを受け入れたものとしてマークしてください。 – NJones

1

モーダルビューを使用する必要があります。また、完了ボタンや、dismissModalViewControllerAnimatedをトリガーするようなものがあります。

関連する問題