更新:尝试了您建议的链接,但无法正常工作。
只是为了确认我理解正确,这些是我采取的步骤。
第一个视图控制器称为 FirstViewController,第二个称为 SearchViewController。
- 将 SearchViewController 导入 FirstViewController,并添加
在 FirstViewController.m 中,添加以下内容: SearchViewController *svc =[[SearchViewController alloc] init]; svc.delegate =自我;
在 SearchViewController.h 我添加了:
@protocol SearchViewControllerDelegate
- (void)setLat:(CLLocationDegrees)lat setLon:(CLLocationDegrees) lon;
以及委托属性:
@property (assign) id <SearchViewControllerDelegate> delegate;
- 在 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];
我假设这一切都编译了,但没有发生任何运动,因为我正在启动一个新对象,而不是引用当前处于活动状态的对象。
有没有办法做到这一点?欢迎评论我如何改进代码,我对此比较陌生。
谢谢