2012-07-21 27 views
1

更新:嘗試了您建議的鏈接,但無法使其工作。從彈出窗口回頭看第一個視圖控制器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]; 

這一切編譯但沒有運動發生,我想是因爲我開始一個新的對象,而不是指一個當前處於活動狀態。

有沒有辦法做到這一點?總是歡迎對我如何改進代碼的評論,我對此比較陌生。

謝謝

回答

1

你說得對,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

相關問題