ContainerViewControllerの使い方
さてさてだいぶ間が開いてしまいましたが、ContainerViewControllerの使い方の説明と参りたいと思います。
前回の説明では触れませんでしたが、
・複数のViewControllerを管理
・子となるViewControllerのViewの描画領域や描画タイミング等を決定する
ということで実は、UITabBarControllerやUINavigationControllerなんかもContainerViewControllerの仲間なんですね。
つまり、TabBarControllerのように複数のビューを切り替えて使いたいけど、「タブではない何か」を作りたいとかいう際にすごく役立つ、というわけです。
尚、前の記事でも書きましたとおり、iOS5 から追加された機能ですのでそれ以前のOSでは使用出来ません。あしからず。
では本題。
まず、関連するメソッドは下記の通り。
- (void)addChildViewController:(UIViewController *)childController NS_AVAILABLE_IOS(5_0);
- (void) removeFromParentViewController NS_AVAILABLE_IOS(5_0);
- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(5_0);
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers NS_DEPRECATED_IOS(5_0,6_0);
// is being replaced by these two methods.
- (BOOL)shouldAutomaticallyForwardRotationMethods NS_AVAILABLE_IOS(6_0);
- (BOOL)shouldAutomaticallyForwardAppearanceMethods NS_AVAILABLE_IOS(6_0);
- (void)willMoveToParentViewController:(UIViewController *)parent NS_AVAILABLE_IOS(5_0);
- (void)didMoveToParentViewController:(UIViewController *)parent NS_AVAILABLE_IOS(5_0);
まあ要するに、ContainerViewControllerにおいて、管理対象である子ViewControllerを
・追加する
・削除する
・切り替える
・切替時に回転イベントを自動で伝搬するかどうか設定する
・切替時にアピアランスメソッドを自動で伝搬するかどうか設定する
・追加、削除の応答
を実装してやればよい、ということ。
次回以降、追加から順に説明していきます。