0


我有一个派生自 UITableViewController 的类,它处理与特定类型的表相关的所有内容。让我们称之为Class T

在可能的主应用程序类中Class A,我有一些方法可以将屏幕的其他区域填充为例如地图。

当我在 中填充我的表Class T时,我想调用在地图上Class A绘制x,y点的方法。

这可能吗?正确的方法应该是什么?

当我想到这种方法时,我期望[super ...]内部调用Class T会调用Class A方法,因为这是实例的所有者类,但它当然会调用父类,在我的例子中是UITableViewController.

谢谢你,
佩德罗

4

2 回答 2

1

如果A是您的主应用程序类,您应该能够使用 访问应用程序实例[UIApplication sharedApplication],将其转换为类A类型,并调用您需要调用的 API。

于 2011-02-28T18:07:15.520 回答
1

为什么不定义一个 ClassAProtocol,然后在 Class T 中添加一个属性“classADelegate”?ClassAProtocol 将定义一个方法,如:


-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;

因此,在 Class T 接口中,您将添加:


@property (assign) id classADelegate;

然后当您实例化时,假设从 instanceA(A 类的实例)、instanceT(T 类的实例)开始,您将执行以下操作:


instanceT.classADelegate = instanceA;

最后在 T 类中,您可以通过以下方式调用绘图方法:


[classADelegate plotXYOnMapFromData:myDataToPlot];

在这种情况下,委托模式的优势在于,Class T 只需要知道 ClassA 的一小部分,即协议,而 ClassA 能够与 T 进行通信,这要归功于它对协议的实现。

于 2011-02-28T18:15:32.513 回答