我一直在学习iOS编程的委托和数据源,需要问一下,制作数据源协议而不是委托协议时,您需要做些什么?
另外,如何在一个委托中为许多相同的对象实现委托?示例一个具有许多唯一自定义警报的对象。
- 编辑 -
第二部分的一个例子:
一个对象有四个不同的警报,每个警报都有不同的按钮。由于对象需要通过成为警报的委托来指示每个按钮的工作方式。如何设置委托方法以确定每个警报?
答案 0 :(得分:14)
两种类型的对象或多或少的行为方式相同,这是问题的关键所在。
委托类型对象响应另一个对象所采取的操作。例如,UITableViewDelegate
协议具有didSelectRowAtIndexPath
等方法,用于在用户选择表中的特定行时执行操作。
数据源类型对象将数据提供给另一个对象。例如,UITableViewDataSource
协议具有cellForRowAtIndexPath
和numberOfRowsInSection
等方法,指示应在表格中显示的内容。
在编译方面两者之间没有硬性差别,它只是一种编码风格,使得对象对代码的用户做了非常清楚的事情。
编辑:
回答第二个问题:如果您希望每个警报的响应方式不同,则需要为每个警报编写不同的代理。例如,如果您的某个警报是保存确认警报(可能您要覆盖文件,并弹出以确认用户想要执行的操作),您将拥有一个对象,例如:
@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
在@implementation
SaveConfirmAlertDelegate
中,您可以根据用户在警报中按下的按钮来实现正确的保存功能。
创建警报视图时,您可以指定委托对象应该是什么,这不必是self
。您可以将四个代理存储为不同的对象,并根据需要将其设置为警报。
我希望这可以解决问题