iOS - 如何发送嵌套在UITabBarController中的MapView的引用

时间:2011-03-16 16:44:01

标签: ios delegates

这可能是一个简单的问题,但我将我的一个应用程序从基于视图的应用程序移动到基于窗口的应用程序。在原始应用程序中,我有一个带有视图控制器和地图的视图。我有一个类解析了一些数据并将其发送到视图控制器。我使用ClassA中的以下代码将数据发送到添加了注释的ClassB。

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

我无法分配视图控制器,因为它将创建视图控制器的新实例。我需要在创建ClassA时传递对视图控制器的引用。

现在地图视图嵌套在UITabBArController中,我不确定我是如何使用地图将ClassA的引用传递给ClassB的。我是否需要添加新的委托方法或启动协议?我希望这是足够的信息。如果我能进一步澄清,请告诉我。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我自己想通了。要调用[[UIApplication sharedApplication]委托],我必须编写一些代码来连接基于窗口的应用程序中的所有内容。我完成了以下步骤以解决所有问题:

  1. 我在@interface

    之前在MyAppDelegate.h中引用了这个类

    @class MyClass

  2. 为我的班级宣布一个IBOutlet

    IBOutlet MyClass * myClass;

  3. 让我的IBOutlet成为一个属性

    @property(nonatomic,retain)IBOutlet MyClass * myClass;

  4. 合成属性(确保也释放它)

    @synthesize myClass;

  5. 将IBOutlet连接到Interface Builder中的视图控制器。在我的应用程序中,标签栏控制器内部有一个标签栏控制器和一个导航控制器,我必须确保IBOutlet进入了与导航控制器嵌套的视图控制器。

  6. 最后,为了在我的任何其他类中引用myClass,我使用以下代码调用了UIApplication sharedApplication:

    MyAppDelegate * appDelegate =(MyAppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate.myClass methodBeingCalled];

  7. 如果您遇到同样的问题,我希望这会有所帮助!