我一直在学习 iOS 编程的委托和数据源,我想问一下,当你制作数据源协议和委托协议时,你需要做哪些不同的事情?
另外,如何在一个委托中为许多相同的对象实现委托?示例一个具有许多独特自定义警报的对象。
- 编辑 -
第二部分的示例:
一个对象有四个不同的警报,每个警报都有不同的按钮。由于对象需要通过作为警报的代表来指定每个按钮的工作方式。我将如何设置委托方法来确定每个警报?
我一直在学习 iOS 编程的委托和数据源,我想问一下,当你制作数据源协议和委托协议时,你需要做哪些不同的事情?
另外,如何在一个委托中为许多相同的对象实现委托?示例一个具有许多独特自定义警报的对象。
- 编辑 -
第二部分的示例:
一个对象有四个不同的警报,每个警报都有不同的按钮。由于对象需要通过作为警报的代表来指定每个按钮的工作方式。我将如何设置委托方法来确定每个警报?
两种类型的对象或多或少的行为方式相同,问题在于它们做什么。
委托类型对象响应另一个对象执行的操作。例如,该UITableViewDelegate
协议具有诸如didSelectRowAtIndexPath
在用户选择表中的特定行时执行动作的方法。
而数据源类型对象将数据提供给另一个对象。再次举例来说,该UITableViewDataSource
协议具有诸如cellForRowAtIndexPath
和numberOfRowsInSection
规定应该在表格中显示什么的方法。
两者在编译方面没有硬性区别,只是一种编码风格,让代码的用户清楚地知道什么对象做什么。
编辑:
要回答您的第二个问题:如果您希望每个警报以不同的方式响应,您将需要为每个警报编写不同的委托。例如,如果您的警报之一是保存确认警报(也许您要覆盖一个文件,并且它会弹出以确认用户想要做什么),您将有一个对象,例如:
@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
在@implementation
forSaveConfirmAlertDelegate
您将根据用户在警报中按下的按钮来实现正确的保存功能。
当您创建警报视图时,您指定委托对象应该是什么,这不必是self
. 您可以将您的四个代理存储为不同的对象,并根据需要将它们设置为警报。
我希望这可以解决问题