めちゃくちゃハマったけど、なんとかできたんで、備忘録の意味で、書いておきます。
まず今使用中のアプリの構成
・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;
}
}
もっとスマートな書き方があるかもしれないけど、とりあえず今日は、ここまで出来た自分に満足!
そのうちリファクタしようっと。
0 件のコメント:
コメントを投稿