iOS7でUITabBarのselectionIndicatorImageが起動時に表示されない問題の対応

UITabBarControllerを継承したクラスを作って-viewDidAppear:をoverrideして、その中で下記のコードを呼ぶだけ。

if([[UIDevice currentDevice] isOS7]){
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        self.selectedIndex = 2;
        self.selectedIndex = 0;
    });
}

dispatch_onceを使って、起動時に1回だけselectedIndexの切り替えをします。

[[UIDevice currentDevice] isOS7]はUIDeviceのCategoryで追加したメソッドなので、OSのバージョンを確認する処理を別で実装して下さい。

iOS7以前で実行されても別に問題は無いと思うので、if文覗いても大丈夫だと思います。

OSのバグっぽい気がするので修正されるまで放置してもいいと思う。

参考