2011-03-16 47 views
0

這可能是一個簡單的問題,但我將其中一個應用程序從基於視圖的應用程序移至基於窗口的應用程序。在原來的應用程序中,我有一個視圖與視圖控制器和地圖。我有一個類解析了一些數據並將其發送到視圖控制器。我使用ClassA中的以下代碼將數據發送到添加註釋的ClassB。iOS - 如何發送嵌套在UITabBarController中的MapView引用

AnnotationProblemAppDelegate *appDelegate = (AnnotationProblemAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[appDelegate.viewController loadOutAnnotations]; 

我不能分配視圖控制器,因爲它會創建一個視圖控制器的新實例。創建ClassA時,我需要傳遞對視圖控制器的引用。

既然地圖視圖嵌套在一個UITabBArController中,我不確定我是如何通過Map將ClassA的引用傳遞給ClassB的。我是否需要添加新的委託方法或啓動協議?我希望這是足夠的信息。讓我知道我是否可以進一步澄清。

預先感謝您!

回答

0

我想出了自己。要調用[[UIApplication sharedApplication]委託],我必須編寫一些代碼才能將基於窗口的應用程序中的所有內容連接起來。我完成以下步驟掛鉤的一切行動:

  1. 我引用的類MyAppDelegate.h @interface前

    @class MyClass的

  2. 聲明一個IBOutlet我的課

    IBOutlet MyClass * myClass;

  3. 讓我IBOutlet中的屬性

    @屬性(非原子,保留)IBOutlet中MyClass的MyClass的*;

  4. 合成屬性(務必同時釋放)

    @synthesize MyClass的;

  5. 將IBOutlet連接到Interface Builder中的視圖控制器。在我的應用程序中,在Tab Bar控制器中有一個Tab Bar Controller和一個導航控制器,我必須確保IBOutlet進入在導航控制器中嵌套的視圖控制器。

  6. 最後,在任何我的其他類的引用MyClass的,我打電話的UIApplication sharedApplication用下面的代碼:

    MyAppDelegate *的appDelegate =(MyAppDelegate *)[[UIApplication的sharedApplication]委託]; [appDelegate.myClass methodBeingCalled];

我希望這可以幫助你,如果你遇到同樣的問題!

相關問題