2012-03-15 29 views
2

我正在做一個應用程序,我有一個視圖控制器與UISegmentedControl,並希望在MKMapView和UITableView之間切換。 在MKMapView中,我想顯示用戶當前位置的地圖,並在TableView中列出一些數據。而已。使用UISegmentedControl切換到MKMapView和UITableView

聽起來很簡單,但我不知道如何繼續,我試圖讓我的視圖控制器一個tableview控制器,然後添加MKMapview,也試圖只添加視圖和一個簡單的視圖控制器。無論如何,有一個正確或更好的方式來做到這一點?

謝謝你們!

+0

而不是使用UISegmentedControl,你有沒有考慮使用UITabBarController? – jonkroll 2012-03-15 15:15:21

回答

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]; 

爲了獲得更好的性能,你可以節省的觀點作爲成員變量,所以他們沒有得到實例化每一次。

當你這樣做時,你甚至可以添加一個Viewtransition。 (例如翻轉或褪色)

另外在iOS5中,您可以編寫自己的ViewControllerContainer。但這對於這個任務太複雜了。

3

您可以使用目標 - 動作具有分段控制隱藏一個視圖,並取消隱藏其他時,它的值改爲:

- (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; 
    } 
} 
相關問題