2011-04-28 7 views
1

私はいくつかのビューをそれぞれ独自のコントローラで管理していますが、それらの一部はネストされています。 私は回転をサポートしたいと思います。いくつかのビューは任意の向きに回転することができ、一部は縦向きのいずれかにしか回転できません(通常または逆さま)。複数のViewController異なる自動ローテーション要件

私の場合、サブビューのいずれかの回転を許可するには、私のrootControllerに-shouldAutorotateToInterfaceOrientationを実装する必要があります。問題は、rootControllerは、サブビューコントローラにこれを問い合わせる必要があるため、回転を許可する必要があるかどうかを知りません。回転の必要なロジックを提供するために、

return [self.settingsController shouldAutorotateToInterfaceOrientation]; 

が、これは、これを行うための正しい方法だろう:私のrootControllerの-shouldAutorotateToInterfaceOrientation Iで

のような何かを行うことができますか? 私はapple's doc about rotationを読んだが、これは実際には苦しんでいない。

答えて

1

今後の参考として、私自身の質問にお答えします。

私の問題は、私はviewControllersを入れ子になっていたし、私のようなものを呼び出すことによって、サブレベルのViewControllerのビューを表示するということであった:どうやら、そのようなネスティングのViewControllerがない

self.view = _subLevelViewController.view; 

または

[self.view addSubview:_subLevelViewController.view]; 

を何をAppleがあなたのために意図しているのか。

あなたは1「ルートのViewController」に固執すべきであるとあなたは同じような方法を使用して他のviewControllersを表示する必要があります。

[self presentModalViewController:_subLevelViewController animated:YES]; 

テーマに関する詳細情報と、非常に良好な読み取り:私が見つけ
http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

0

この投稿と参照されたブログは、ネストされたビューコントローラを実行するための最も簡潔なガイダンスです。これは、更新する価値がある:

// "self" is the root view controller. 
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    // The following is not available until iPhone 5.0: 
    [self presentViewController:self.subViewController animated:YES completion:NULL]; 
else 
    // For iOS 4.3 and earlier, use this (deprecated in 5.0): 
    [self presentModalViewController:self.subViewController animated:YES]; 

私はここにヌルそれを残したが、新しい方法は、あなたがcompletion:のparamを経由してインライン関数を送信することを可能にすることに注意してくださいました。クラスrefごとに、subViewControllerのviewDidAppear:が実行された後に呼び出されます。

関連する問題