2

ユーザーが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 は、以前に作成されたテーブルビューをリロードする最良の方法ではありませんか? チェンジャー メソッドがテーブル ビュー コンテナーをリロードすると、何かが発生しているため、テーブル ビューに何も表示されないのではないかと思われます。

または、テーブルビューを「キャッシュ」して、それに戻ったときにすべてを再度リロードするのではなく、すべてを保持する方法はありますか?

4

0 に答える 0