最近、ブログ書いていなかったので超小技ですが、書いてみます。
前提として、UITabBarControllerのviewControllersにViewControllerが2つ以上セットされている状態で、遷移元のViewControllerに記述した例です。UITabBarControllerへのviewControllerのセットはコードで書いてもUIStoryboardで書いても良いです。今回は、必要なことを事前にやってくれるUIStoryboardでタブ構成を作成したところから始めます。
UIViewController *nextViewController = self.tabBarController.childViewControllers[1]; [UIView transitionFromView:self.view toView:nextViewController.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve completion: ^(BOOL finished) { self.tabBarController.selectedViewController = nextViewController; }];
これだけです。
解説します。まず、self.tabBarControllerで、現在のUIViewControllerを格納しているUITabBarControllerのインスタンスが取得できます。UITabBarControllerはchildViewControllersというNSArrayのプロパティを持っています。
self.tabBarController.childViewControllers[1]
これで、その1番めのUIViewControllerのインスタンス(遷移先のUIViewController)を取得しています。
次にUIViewのアニメーションクラスメソッドであるtransitionFromView:toView:duration:options:completionを利用して遷移します。optionのUIViewAnimationOptionTransitionCrossDissolveを変えることでアニメーションの種類をいろいろ変えることができます。
最後に、UITabBarControllerのselectedViewControllerに遷移先のviewControllerをセットして完了です。これはかなり基本的なメソッドを使ってやりましたが、UITabBarControllerの切替はぱっと画面が変わるだけでそっけないので、何かちょっと変わったことがしたいというニーズがあれば利用してみてください。あと、応用すれば様々なアニメーションが可能になりますね!
メソッドなどに関する質問など、あれば、コメントしてみてください。可能な限り回答してみたいと思います。
ではでは。よろしくお願いいたします。