从popover VC返回第一个视图控制器

时间:2012-07-21 15:01:55

标签: ios ipad location

更新:尝试了您建议的链接,但无法使其正常工作。

只是为了确认我理解它,这些是我采取的步骤。

第一个视图控制器称为FirstViewController,第二个称为SearchViewController。

  1. 将SearchViewController导入FirstViewController,然后添加
  2. 在FirstViewController.m中,添加以下内容: SearchViewController * svc = [[SearchViewController alloc] init]; svc.delegate = self;

  3. 在SearchViewController.h中我添加了:

    @protocol SearchViewControllerDelegate

    • (void)setLat:(CLLocationDegrees)lat setLon:(CLLocationDegrees)lon;
  4. 以及委托属性:

    @property (assign) id <SearchViewControllerDelegate> delegate;
    
    1. 在SearchViewController.m中,我合成了委托,并添加了 [self.delegate setLat:51.0000 setLon:-0.10000];
    2. 从某些NSLog测试看来,方法setLatSetLon方法本身似乎永远不会被调用。

      我目前正在尝试完成我的大学iPad应用程序。它的目的是提供校园的实时谷歌/苹果地图视图以及注释和MKPolygons的叠加。一切正常。

      我现在添加了一个按钮,用于加载一个popover(第二个视图控制器),其中包含一个校园建筑物的表格(它们本身就是CampusBuilding的对象,存储坐标)以及一个搜索框,这个一切都很好。我要做的是当用户选择一行时,地图视图以该特定建筑为中心。我在下面编写了一个方法,当我从地图视图控制器本身引用它时可以正常工作。

      但是我如何从第二个视图控制器执行此操作?

      这是第一个视图控制器中存在的方法:

      - (void)setLat:(CLLocationDegrees)lat setLon:(CLLocationDegrees) lon{
      
      MKCoordinateSpan span;
      span.latitudeDelta = (double) .003;
      span.longitudeDelta = (double).003;
      //Define the default region to focus on
      MKCoordinateRegion region;
      region.span=span;
      region.center=CLLocationCoordinate2DMake
      (lat,lon);
      //set the default region to 'region'
      [_mapView setRegion: region animated:YES];
      [_mapView regionThatFits:region];
      
      }
      

      现在在第二个视图控制器中,它可以作为表视图控制器正常工作。我已经设置好了,所以当用户选择一行时,它会加载一个新视图。我还试图启动第一个视图控制器的对象,然后写这个:         FirstViewController * firstVC;

          [firstVC setLat:building.latValue setLon:building.lonValue];
      

      这一切都是编译但没有动作发生,我假设因为我正在启动一个新对象,而不是指那个当前活动的对象。

      有办法做到这一点吗?关于如何改进代码的评论总是受欢迎的,我对此比较陌生。

      由于

1 个答案:

答案 0 :(得分:1)

你是对的,firstVC将是FirstViewController的新实例。不是前一个。

您需要的是使用Objective-C的委托模式。它通常用于此场景。以下是我之前的SO答案中的两个示例,其中包含有关如何实现的示例代码。

how to resume timer when poping to view2

Calling a method from another class in Objective C