ユーザーがUIButtonを押すと、テーブルビューとマップビューを切り替えることができるコンテナビューがあります。det は、現在どのコンテナ ビューにあるかを決定します。
- (IBAction)changer:(id)sender{
if(det == TRUE){
TableViewController *viewController2 = [[TableViewController alloc]init];
viewController2.view.frame = self.container.bounds;
[viewController2 willMoveToParentViewController:self];
[self.container addSubview:viewController2.view];
[self addChildViewController:viewController2];
[viewController2 didMoveToParentViewController:self];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.container cache:YES];
[UIView commitAnimations];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 55, 35)];
[button setImage:[UIImage imageNamed:@"mapSwitch.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(changer:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:back];
det = FALSE;
}
else{
ViewController *viewController1 = [self.storyboard instantiateViewControllerWithIdentifier:@"vc1"];
viewController1.view.frame = self.container.bounds;
[viewController1 willMoveToParentViewController:self];
[self.container addSubview:viewController1.view];
[self addChildViewController:viewController1];
[viewController1 didMoveToParentViewController:self];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.container cache:YES];
[UIView commitAnimations];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 55, 35)];
[button setImage:[UIImage imageNamed:@"listSwitch.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(changer:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:back];
det = TRUE;
}
}
切り替えは問題ありません。正しく入力されたテーブルビューを最初にロードします。あとはmapviewに切り替えればOKです。ただし、テーブルビューに戻って呼び出すと、
[self.tableView reloadData];
メソッド、テーブルビューは空です。基本的に、テーブルビューに戻った後に正しい情報/コンテンツを返すテーブルビューに表示する必要がある2つの情報の配列がありますが、リロードデータ後にテーブルビューに表示されません。
reloadData は、以前に作成されたテーブルビューをリロードする最良の方法ではありませんか? チェンジャー メソッドがテーブル ビュー コンテナーをリロードすると、何かが発生しているため、テーブル ビューに何も表示されないのではないかと思われます。
または、テーブルビューを「キャッシュ」して、それに戻ったときにすべてを再度リロードするのではなく、すべてを保持する方法はありますか?