更新:嘗試了您建議的鏈接,但無法使其工作。從彈出窗口回頭看第一個視圖控制器VC
只是爲了確認我對它的理解正確,這些是我採取的步驟。
第一個視圖控制器被稱爲FirstViewController,第二個被稱爲SearchViewController。
- 導入SearchViewController成FirstViewController,並添加
在FirstViewController.m,添加以下: SearchViewController * SVC = [[SearchViewController的alloc] INIT]; svc.delegate = self;
在SearchViewController.h我加入:
@protocol SearchViewControllerDelegate
- (無效)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];
這一切編譯但沒有運動發生,我想是因爲我開始一個新的對象,而不是指一個當前處於活動狀態。
有沒有辦法做到這一點?總是歡迎對我如何改進代碼的評論,我對此比較陌生。
謝謝
非常好,謝謝。我認爲這可能與代表有關,但我仍然沒有真正理解授權。我會看看這些鏈接,我預計我對代表團的理解只會隨着經驗而改進。感謝你的回答。 – 2012-07-21 17:30:45
感謝您的幫助,遺憾的是我不能得到它的工作。你能看看原始文章中的更新嗎? – 2012-07-21 23:58:05
我想你錯過了一步:在你的FirstViewController的界面文件--.h文件中,確保你已經包含了這個,如下所示: @interface FirstViewController:UIViewController –
user523234
2012-07-24 00:47:37