tabBarController上の別tabのtableViewを更新する方法

2014年9月7日

xcode

めちゃくちゃハマったけど、なんとかできたんで、備忘録の意味で、書いておきます。 まず今使用中のアプリの構成 ・tabBarには3つのviewControllerがあり、 1、tableView 2、webView 3、表示系 みたいな感じ。 やりたいことは、「2番のwebViewでファイルをダウンロードしてきて、ダウンロードが完了したら、1番のtableViewのリストを更新する」という内容。 これは自分がviewcontrollerの仕様を把握していなかった事も原因なのだが、普通にヘッダファイルを読み込んでいるtableViewを指定してreloadDataすればいいとだけ考えていて、ずっと、更新できずにいたところ、tabBarの下階層にあるviewControllerをいじらないといけないことに気がついた。 そしてたどりついたのが、tabBarのviewControllerを配列で取得し、tableViewのあるclass名を判定し、その中の関数を実行する事で解決。

source

NSArray *tb = [NSArray arrayWithArray:self.tabBarController.viewControllers]; for (int i = 0; i < [tb count]; ++i) { NSString *classStr = NSStringFromClass([[[[tb objectAtIndex:i] viewControllers] objectAtIndex:0] class]); if ([classStr isEqualToString:@"ViewController_hoge"]) { [[[[tb objectAtIndex:i] viewControllers] objectAtIndex:0] reload]; break; } } もっとスマートな書き方があるかもしれないけど、とりあえず今日は、ここまで出来た自分に満足! そのうちリファクタしようっと。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。