4

老实说,整个代表团的事情让我有点困惑,但我正在努力变得更好。

现在,我有一个UITableView任务列表,并且我有一个+按钮,可以调出一个模式视图来添加一个新任务。您还可以点击每个任务来更改名称。

我将如何使用委托来实现这一点?显然,模态视图结果会改变根 UITableView(添加一个新单元格),所以我认为委托是最好的选择。编辑也是如此。

我做两个分开的吗?一?有人可以从概念上向我展示委托方案的外观吗?

4

2 回答 2

2

我会用不同的方式/更简单地说:委托是允许类相互交谈的几种方式之一。它不是 Objective-C 独有的,也不是每项工作都适合的工具。

TL;DR:别担心 - 还没有!

不用担心委托是什么;这就像当你真的只想砍一棵树时问刀是如何制造的。在这种情况下,您将通过实践了解更多(更快),Apple 的 UITableView 文档非常棒:

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/tableview_iphone/AboutTableViewsiPhone/AboutTableViewsiPhone.html

您正在尝试做的事情非常结构化,您不需要发明任何新代码 - 事实上,您基本上不能;Apple 已经决定了它UITableView的工作原理,因此了解其背后的理论对您(还)无济于事。

所以现在,不要害怕,只需点击上面的链接——也许谷歌一些 UITableView 教程——当你遇到特定问题(你肯定会)时,在 SO 上发布这些问题。:)

稍后:1 分钟的委派概述

..然后有一天,您需要开始制作自己的需要相互交谈的类和子类。那是您需要了解委派的时候!

UIViewController想象一下,你有一个显示UITableView('Table')的类的实例(我将称之为'You')。在这种情况下,Apple 设计UITableView使用委托,以便 Table 可以问你一堆问题。表格可能会问你:我需要显示多少行?每行应该多高?第 72 行的单元格应该是什么样子?您知道这一点,但 Table 不知道,因此 Table 将通过委派/数据源方法向您询问答案。您的代码会响应答案。

更好的是:课程可以被迫告诉你事情!例如:“用户刚刚点击了一个单元格”,或“我即将解雇自己”,或“屏幕刚刚旋转”。这些方法的美妙之处在于它允许您对各种关键事件做出反应并做好准备。这是 iOS 编程的一个HUUUUUUUGE部分,你会经常遇到它。

简而言之,这就是委托,类之间的对话还有更棒的方式——例如块,在某些情况下甚至是直接变量存储。

如果你真的,真的想知道更多,即使我还不推荐它,你可以在这里查看另一个很好的 Apple 文档:

http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

于 2012-12-25T10:39:20.783 回答
0

委派是一个简单概念的花哨词:替身。UITableView 设置为使用委托(替身),因此您不必在每次要使用它时都对其进行子类化。您的替身将提供自定义视图行为的方法,而不是继承和覆盖(重新定义)其方法。

通常,您会让表视图控制器成为表视图委托。这意味着当 table view 被问到它的任何委托问题(例如“这一行的高度是多少?”)时,它会将这个问题传递给它的替身,即您的控制器。

UITableViewDelegate 协议参考中非常清楚地指定了允许您定义其编辑行为的委托方法。您可能还需要一些来自UITableViewDataSource的方法。你肯定想看看 Apple 的Table View Programming Guide。请注意索引底部列出的示例代码项目。

于 2012-12-25T04:36:06.163 回答