委托和数据源iOS

时间:2012-06-19 18:56:06

标签: ios delegation

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

另外,如何在一个委托中为许多相同的对象实现委托?示例一个具有许多唯一自定义警报的对象。

- 编辑 -

第二部分的一个例子:

一个对象有四个不同的警报,每个警报都有不同的按钮。由于对象需要通过成为警报的委托来指示每个按钮的工作方式。如何设置委托方法以确定每个警报?

1 个答案:

答案 0 :(得分:14)

两种类型的对象或多或少的行为方式相同,这是问题的关键所在。

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

数据源类型对象将数据提供给另一个对象。例如,UITableViewDataSource协议具有cellForRowAtIndexPathnumberOfRowsInSection等方法,指示应在表格中显示的内容。

在编译方面两者之间没有硬性差别,它只是一种编码风格,使得对象对代码的用户做了非常清楚的事情。

编辑:

回答第二个问题:如果您希望每个警报的响应方式不同,则需要为每个警报编写不同的代理。例如,如果您的某个警报是保存确认警报(可能您要覆盖文件,并弹出以确认用户想要执行的操作),您将拥有一个对象,例如:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end

@implementation SaveConfirmAlertDelegate中,您可以根据用户在警报中按下的按钮来实现正确的保存功能。

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

我希望这可以解决问题