我有一个派生自UITableViewController的类,并处理与特定类型的表相关的所有内容。我们称之为Class T
在主应用程序类Class A
中,我有一些方法可以填充屏幕的其他区域,例如地图。
当我在Class T
内填充我的表格时,我想调用Class A
方法来绘制地图上的x,y
点。
这可能吗?这样做的正确方法是什么?
当我考虑这种方法时,我期望在[super ...]
内调用Class T
会调用Class A
方法,因为这是实例的所有者类,但是当然它调用了父类,在我的例子中是UITableViewController
。
谢谢你,
佩德罗
答案 0 :(得分:1)
如果A
是您的主要应用程序类,您应该能够使用[UIApplication sharedApplication]
访问应用程序实例,将其强制转换为类A
类型,并调用所需的API调用
答案 1 :(得分:1)
为什么不定义ClassAProtocol,然后在Class T中添加属性“classADelegate”? ClassAProtocol将定义一个方法,如:
-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;
因此,在Class T界面中,您将添加:
@property (assign) id classADelegate;
然后当你实例化时,让我们说实例A(A类的实例),instanceT(T类的实例),你会这样做:
instanceT.classADelegate = instanceA;
最后在Class T中你可以用这种方式调用绘图方法:
[classADelegate plotXYOnMapFromData:myDataToPlot];
在这种情况下委托模式的优点是T类只需要知道一小部分ClassA,即协议,并且由于协议的实现,ClassA能够与T通信。