我应该何时使用Target和零动作?另一方面,我什么时候应该使用Action和nil Target?何时我应该使用Action和Target?
let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil)
答案 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,即接收消息的对象。发送的消息 当事件发生时称为动作消息。虽然是目标 可以是任何对象,甚至是框架对象,它通常是自定义的 控制器,用于处理特定于应用程序的操作消息 方式。
就MVC而言
目标:
是作为委托的控制器来查看对象(在你的情况下是UIBarButtonItem)。
<强>动作:强>
响应视图的方法调用(委托)。
更多支票:Targe-Action
答案 2 :(得分:1)
目标 - 是应该触发操作方法的内容。在这种情况下,它应该是自我。 Self代表你的按钮对象。
动作 - 表示将在按钮的点击事件中调用的选择器方法。
如果您不想在按钮上允许操作事件,请将选择器指定为nil。所以它应该只被视为一个按钮对象。
答案 3 :(得分:0)
目标:
应该调用选择器(操作中指定的方法)的对象/实例。
<强>动作:强>
点击按钮时要触发的方法的名称。
我应该何时使用Target和nil操作?
当你的屏幕/ ViewController中有按钮时,你不希望它在点击时触发任何方法(没有动作的虚拟按钮)
答案 4 :(得分:0)
该动作是方法的选择器,当相应的事件发生时(例如,点击按钮)执行该方法。当您没有设置任何操作时,您的按钮将不执行任何操作。
目标是消息调用的接收者。当您将其设置为nil
时,将通过响应程序链发送消息调用。这在iOS中很少使用,但在macOS中很常见。