5

我一直在学习 iOS 编程的委托和数据源,我想问一下,当你制作数据源协议和委托协议时,你需要做哪些不同的事情?

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

- 编辑 -

第二部分的示例:

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

4

1 回答 1

14

两种类型的对象或多或少的行为方式相同,问题在于它们做什么。

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

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

两者在编译方面没有硬性区别,只是一种编码风格,让代码的用户清楚地知道什么对象做什么。

编辑:

要回答您的第二个问题:如果您希望每个警报以不同的方式响应,您将需要为每个警报编写不同的委托。例如,如果您的警报之一是保存确认警报(也许您要覆盖一个文件,并且它会弹出以确认用户想要做什么),您将有一个对象,例如:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end

@implementationforSaveConfirmAlertDelegate您将根据用户在警报中按下的按钮来实现正确的保存功能。

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

我希望这可以解决问题

于 2012-06-19T19:04:07.947 回答