首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目标和行动的区别是什么?

目标和行动的区别是什么?
EN

Stack Overflow用户
提问于 2017-03-14 06:37:16
回答 5查看 5.6K关注 0票数 7

我什么时候应该与目标和零行动一起工作?另一方面,什么时候我应该与行动和零目标工作,什么时候我应该与行动和目标工作?

代码语言:javascript
复制
let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-14 06:46:51

通常,你会同时看到目标和行动。

目标和动作用于引用特定的方法。在您的代码片段中,您正在创建一个UIBarButtonItemUIBarButtonItem需要知道当它被点击时应该调用什么方法。

如何告诉它该调用哪种方法?

“只需传递方法引用”,您可能会说:

代码语言:javascript
复制
let rightButton = UIBarButtonItem(
    title: "Done", style: .done, methodToCall: self.myMethod)

不幸的是,这只适用于迅速。UIBarBUttonItem是一个目标C,因此不能使用这种方法。

在目标C中,Selectors表示方法,但它们不存储要调用方法的对象。这就是为什么我们需要一个额外的target参数。它指定应该调用该方法的对象。另一方面,action指定要调用的方法。

在这里,我们想打电话给self.myMethod。调用该方法的对象是self,被调用的方法是myMethod。太棒了!现在让我们把这些递过去!

代码语言:javascript
复制
let rightButton = UIBarButtonItem(
        title: "Done", style: .done, target: self, action: #selector(myMethod))
票数 11
EN

Stack Overflow用户

发布于 2017-03-14 06:43:25

据Apple说。

目标-动作是一种设计模式,在这种模式中,当事件发生时,对象保存向另一个对象发送消息所需的信息。存储的信息由两项数据组成:一个动作选择器(它标识要调用的方法)和一个目标(它是接收消息的对象)。事件发生时发送的消息称为操作消息。尽管目标可以是任何对象,甚至框架对象,但它通常是一个自定义控制器,它以特定于应用程序的方式处理操作消息。

中的MVC

目标:

是控制器,它充当查看对象的委托(在您的情况下是UIBarButtonItem)。

行动:

方法调用响应视图(委托)。

有关更多信息,请查看:Targe行动

票数 2
EN

Stack Overflow用户

发布于 2017-03-14 06:42:07

目标:

应该调用选择器(在操作中指定的方法)的对象/实例。

行动:

单击按钮时要触发的方法的名称。

我什么时候应该使用目标和零动作?

当您的屏幕/视图控制器中有按钮,并且您不希望它在点击时触发任何方法(没有动作的虚拟按钮)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42779243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档