【问题标题】:Delegation and Data Source iOS委托和数据源 iOS
【发布时间】:2012-06-20 03:21:23
【问题描述】:

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

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

--编辑--

第二部分的例子:

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

【问题讨论】:

    标签: ios delegation


    【解决方案1】:

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

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

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

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

    编辑:

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

    @interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
    @end
    

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

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

    我希望这能解决问题

    【讨论】:

    • 感谢您解释我的第一个问题。我在我的问题中添加了一个示例。
    • @RMDan 我为你的第二个问题添加了额外的解释,我希望能澄清一点
    • 这很有意义。我将不得不更多地了解委托,但它开始变得有意义了。
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多