2012-03-15 14 views
2

私はアプリケーションを作成していますが、私はUISegmentedControlを持つビューコントローラを持っていて、MKMapViewとUITableViewを切り替える必要があります。 MKMapViewでは、ユーザーの現在の場所でマップを表示したい、そしてTableViewでいくつかのデータをリストしたいと思います。それでおしまい。UISegmentedControlを使用してMKMapViewとUITableViewに切り替えます。

シンプルだが、私はどのように進行するのか分からない、私は私のビューコントローラをtableviewコントローラにしてMKMapviewを追加しようとしましたが、両方のビューと単純なビューコントローラを追加しようとしました。とにかく、それを行うための正しい方法がありますか?

ありがとうございました!あなたは切り替えたい時はいつでも

+0

代わりにUISegmentedControlを使用する代わりに、UITabBarControllerを使用することを検討しましたか? – jonkroll

答えて

0

私は2 navigationControllersを使用します。

いつものように最初のnavigationControllerを宣言してから、ユーザーがsegmentedControlをタップし、別のnavigationControllerでtableControllerを作成し、それをmodalViewControllerとして表示します。

UINavigationController* modalController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; 
[modalController setToolbarHidden:NO]; 
[self.navigationController presentModalViewController:modalController animated:YES]; 
[modalController release]; 

次に、ユーザーがtableViewControllerのセグメント化されたコントロールをタップすると、viewControllerを閉じるだけです。

1

subview

としての両方を追加し、単に

[self.view bringSubviewToFront:YOURVIEW]; 
1

を行うクリーンな方法は、すぐにボタンが押されたとして、サブビューを切り替えることであろう。

[view1 removeFromSuperView]; 
[self.view addSubview: view2]; 

は、より良いパフォーマンスを得るために、あなたはメンバ変数として両方のビューを救うことができるので、彼らは毎回インスタンス化されません。

このようにする場合は、ビュートランジションを追加することもできます。 (フリップまたはフェードなど)

また、iOS5では独自のViewControllerContainerを記述することもできます。しかし、それはその仕事にはあまりにも複雑です。

3

あなたは1つのビューを隠すセグメント化されたコントロールを持つようにターゲット・アクションを使用して、値が変更されていたときに、他の非表示を解除することができます

- (void)segmentChanged:(id)sender 
{ 
    switch ([sender selectedSegmentIndex]) { 
     case 0: 
     { 
      self.tableView.hidden = NO; 
      self.mapView.hidden = YES; 
      break; 
     } 
     case 1: 
     { 
      self.tableView.hidden = YES; 
      self.mapView.hidden = NO; 
      break; 
     } 
     default: 
      break; 
    } 
} 
関連する問題