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

xcode
LINEで送る
Share on GREE
Share on LinkedIn

めちゃくちゃハマったけど、なんとかできたんで、備忘録の意味で、書いておきます。

まず今使用中のアプリの構成

・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; } } ---------- もっとスマートな書き方があるかもしれないけど、とりあえず今日は、ここまで出来た自分に満足! そのうちリファクタしようっと。 スクリーンショット 2014-09-07 17.39.28

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です