2012-06-19 90 views
5

我一直在学习有关iOS编程的委托和数据源,需要问一下,制作数据源协议时需要做什么而不是委托协议?委托和数据源iOS

另外我怎样才能实现一个委托中的许多相同的对象代表?示例一个具有许多独特定制警报的对象。

- 编辑 -

用于第二部分的一个例子:

,其具有每四个不同的警报用不同的按钮

一个目的。由于对象需要通过成为警报委托来指定每个按钮的工作方式。我将如何设置委托方法来确定每个警报?

回答

14

这两种类型的物体或多或少都有相同的表现方式,这是他们做的事情的问题。

委托类型对象响应另一个对象所采取的操作。例如,UITableViewDelegate协议具有用于在用户选择表格中的特定行时执行动作的方法,例如didSelectRowAtIndexPath

数据源类型对象将数据提供给另一个对象。再次例如,UITableViewDataSource协议具有诸如cellForRowAtIndexPathnumberOfRowsInSection的方法来指示应该在表格中显示什么。

这两者在编译方面并没有很大的区别,它只是一种编码风格,使得对象对代码的用户做的事情非常清楚。

编辑:

要回答你的第二个问题:如果你希望每个警报不同的反应,你需要编写每个警报不同的委托。例如,如果您的某个警报是保存确认警报(也许您将覆盖文件,并且弹出以确认用户想要执行的操作),则您将拥有如下对象:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

而在@implementationSaveConfirmAlertDelegate中,您将实现正确的保存功能,具体取决于用户在警报中按下哪个按钮。

当您创建一个警报视图时,您可以指定委托对象应该是什么,这不一定是self。您可以将您的四位代表存储为不同的对象,并根据需要将它们设置为警报。

我希望这可以清理东西

+0

感谢您解释我的第一个问题。我为我的问题添加了一个例子。 – RMDan

+0

@RMDan我为你的第二个问题添加了一个额外的解释,我希望能够清楚一点 –

+0

这非常有道理。我将不得不更多地了解代表团,但它开始有意义。 – RMDan

相关问题