2013年9月30日月曜日

UITabBar のアイテムを選択する

KIF を使用してテストを書こうとしたが、TabBar のアイテム選択の方法が分からない。

UITabBarController を使用してボタンを選択する方法は良くあるけど、UITabBar だけでの選択方法の情報が無かった。

とはいえ、やはり実現している方はおられたので参考にさせていただいた。

【文法】UITabBarのItem(UITabBarItem)の切り替え
http://teapipin.blog10.fc2.com/blog-entry-66.html

現在サンプルで作成しているアプリがナビゲーションコントロールも使っている事もあって、TabBar コントロールを取得するまでが、これまたしんどかったが、こちらも情報が有ったので知識を拝借させて頂いた。

UIViewからUIViewControllerを見る
http://ameblo.jp/pyon-prog/entry-11329857939.html

上記 2 つを合わせて KIF 用のテストを以下のように書いた。
    -(void) testTabBar0Push {
                
        // TabBar の Delegate を発火させるため ViewController まで辿る
        UIApplication *app = [UIApplication sharedApplication];
        UIWindow *window = app.keyWindow;
        
        // rootViewController を取得
        UIViewController *uiview = (UIViewController *)window.rootViewController;
        
        // NavigationController から対象の ViewController を取得
        UINavigationController *navigationController = [uiview.childViewControllers lastObject];
        NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:navigationController.viewControllers];
        ViewController *view = (ViewController *)[viewControllers objectAtIndex:0];
     
        // TabBar
        UITabBar *tabbar = (UITabBar *)[tester waitForViewWithAccessibilityLabel:@"tabBar"];
        UITabBarItem *item = [tabbar.items objectAtIndex:0];
        
        // 選択
        [tabbar setSelectedItem:item];
        [view tabBar:tabbar didSelectItem:item];
        
        // 確認用コードを以下に書く
        ...
    }
どう考えても力業過ぎてコレで良いのか?
と思うがひとまずの動きが出来ているので良しとしようと思う。

今後もっとスマートな方法があれば、また別の記事で書こうと思う。

0 件のコメント:

コメントを投稿