委托和数据源iOS

RMD*_*Dan 5 delegation ios

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

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

- 编辑 -

第二部分的一个例子:

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

Dan*_*n F 14

两种类型的对象或多或少都表现出相同的方式,这是他们所做的事情的问题.

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

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

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

编辑:

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

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
Run Code Online (Sandbox Code Playgroud)

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

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

我希望这能解决问题