从弹出窗口回头看第一个视图控制器VC

问题描述:

更新:尝试了您建议的链接,但无法使其工作。从弹出窗口回头看第一个视图控制器VC

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

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

  1. 导入SearchViewController成FirstViewController,并添加
  2. 在FirstViewController.m,添加以下: SearchViewController * SVC = [[SearchViewController的alloc] INIT]; svc.delegate = self;

  3. 在SearchViewController.h我加入:

    @protocol SearchViewControllerDelegate

    • (无效)setLat:(CLLocationDegrees)LAT setLon:(CLLocationDegrees)LON;

以及委托属性:

@property (assign) id <SearchViewControllerDelegate> delegate; 
  1. 在SearchViewController.m我合成委托,并加入 [self.delegate setLat:51.0000 setLon:-0.10000];

从一些NSLog测试看来,方法setLatSetLon方法本身永远不会被调用。

我正在尝试完成我的大学iPad应用程序。它的目的是提供一个带有注释和MKPolygons覆盖的校园的实时谷歌/苹果地图视图。这一切工作正常。

我现在已经添加了一个按钮,它将一个弹出窗口(第二个视图控制器)加载到校园建筑物的表格(它们本身就是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]; 

这一切编译但没有运动发生,我想是因为我开始一个新的对象,而不是指一个当前处于活动状态。

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

谢谢

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

你需要的是使用Objective-C的委托模式。它在这种情况下通常使用。以下是我以前的答案中的两个示例,其中包含有关如何实施的示例代码。

how to resume timer when poping to view2

Calling a method from another class in Objective C

+0

非常好,谢谢。我认为这可能与代表有关,但我仍然没有真正理解授权。我会看看这些链接,我预计我对代表团的理解只会随着经验而改进。感谢你的回答。 – 2012-07-21 17:30:45

+0

感谢您的帮助,遗憾的是我不能得到它的工作。你能看看原始文章中的更新吗? – 2012-07-21 23:58:05

+0

我想你错过了一步:在你的FirstViewController的界面文件--.h文件中,确保你已经包含了这个,如下所示: @interface FirstViewController:UIViewController user523234 2012-07-24 00:47:37