【问题标题】:Use UISegmentedControl to switch to a MKMapView and UITableView使用 UISegmentedControl 切换到 MKMapView 和 UITableView
【发布时间】:2012-04-01 03:03:38
【问题描述】:

我正在制作一个应用程序,并且我有一个带有 UISegmentedControl 的视图控制器,并且想要在 MKMapView 和 UITableView 之间切换。 在 MKMapView 中,我想显示带有用户当前位置的地图,在 TableView 中,我想列出一些数据。就是这样。

听起来很简单,但我不知道如何继续,我试图让我的视图控制器成为 tableview 控制器,然后添加 MKMapview,还尝试只添加两个视图和一个简单的视图控制器。无论如何,有正确或更好的方法吗?

谢谢大家!

【问题讨论】:

  • 不使用 UISegmentedControl,您是否考虑过使用 UITabBarController?

标签: objective-c ios uitableview uisegmentedcontrol mapkit


【解决方案1】:

将两者都添加为subview

然后只要你想切换就做

[self.view bringSubviewToFront:YOURVIEW];

【讨论】:

    【解决方案2】:

    干净的方法是在按下按钮后立即切换子视图。

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

    为了获得更好的性能,您可以将两个视图保存为成员变量,这样它们就不会每次都被实例化。

    您甚至可以添加一个 Viewtransition,以这种方式进行。 (例如翻转或褪色)

    在 iOS5 中你也可以编写自己的 ViewControllerContainer。但这对于这项任务来说太复杂了。

    【讨论】:

      【解决方案3】:

      您可以使用 target-action 让分段控件隐藏一个视图并在其值更改时取消隐藏另一个视图:

      - (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;
          }
      }
      

      【讨论】:

        【解决方案4】:

        我会使用 2 个导航控制器。

        像往常一样声明你的第一个navigationController,然后当用户点击segmentedControl时,用另一个navigationController创建你的tableController,并将其显示为modalViewController。

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

        然后,当用户点击 tableViewController 的分段控件时,只需关闭 viewController。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-24
          • 1970-01-01
          • 2010-11-06
          • 2014-08-22
          相关资源
          最近更新 更多