swift中Target和Action有什么区别?

时间:2017-03-14 06:37:16

标签: ios swift swift3

我应该何时使用Target和零动作?另一方面,我什么时候应该使用Action和nil Target?何时我应该使用Action和Target?

let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil)

5 个答案:

答案 0 :(得分:8)

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

目标和行动用于指代特定方法。在您的代码段中,您正在创建function setValue($var1) { global $con; global $k; $k++; $var1 = strtolower($var1); $var1 = preg_replace('/[^a-zA-Z0-9_-]/', '-', $var1); $var1 = preg_replace('/-+/', '-', $var1); $result1 = mysqli_query($con, "select * from tbl_name where name='".$var1."'"); if (mysqli_num_rows($result1) > 0) { setValue($var1.'-'.$k); } else { //die($var1); return $var1; } } UIBarButtonItem需要知道点击时应该调用的方法。

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

“只需​​传递方法参考”,您可能会说:

UIBarButtonItem

不幸的是,这只适用于swift。 let rightButton = UIBarButtonItem( title: "Done", style: .done, methodToCall: self.myMethod) 是一个客观的C API,因此无法使用此方法。

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

在这里,我们想要致电action。调用该方法的对象是self.myMethod,被调用的方法是self。大!现在让我们通过这些!

myMethod

答案 1 :(得分:1)

根据Apple Doc。

  

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

enter image description here

就MVC而言

目标:

是作为委托的控制器来查看对象(在你的情况下是UIBarButtonItem)。

<强>动作:

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

更多支票:Targe-Action

答案 2 :(得分:1)

目标 - 是应该触发操作方法的内容。在这种情况下,它应该是自我。 Self代表你的按钮对象。

动作 - 表示将在按钮的点击事件中调用的选择器方法。

如果您不想在按钮上允许操作事件,请将选择器指定为nil。所以它应该只被视为一个按钮对象。

答案 3 :(得分:0)

目标:

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

<强>动作:

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

我应该何时使用Target和nil操作?

当你的屏幕/ ViewController中有按钮时,你不希望它在点击时触发任何方法(没有动作的虚拟按钮)

答案 4 :(得分:0)

该动作是方法的选择器,当相应的事件发生时(例如,点击按钮)执行该方法。当您没有设置任何操作时,您的按钮将不执行任何操作。

目标是消息调用的接收者。当您将其设置为nil时,将通过响应程序链发送消息调用。这在iOS中很少使用,但在macOS中很常见。

相关问题