Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 当只设置一个iAction时,如何在代码中识别UISwitch的实例?_Objective C_Ios - Fatal编程技术网

Objective c 当只设置一个iAction时,如何在代码中识别UISwitch的实例?

Objective c 当只设置一个iAction时,如何在代码中识别UISwitch的实例?,objective-c,ios,Objective C,Ios,假设您在故事板上放置了2个ui开关对象。它们中的每一个都可以处于打开或关闭状态 进一步假设iAction设置为将情节提要与代码链接: - (IBAction)activityTurnedOn:(UISwitch*) activitySwitch; 问题: 是否有一种方法可以识别我在代码中使用的许多UISwitch对象中的每一个,以知道哪一个刚刚打开或关闭?是否有一个属性可以通过Interface Builder分配,我可以在代码中测试它?是的,在Interface Builder中设置对象标

假设您在故事板上放置了2个
ui开关
对象。它们中的每一个都可以处于打开或关闭状态

进一步假设
iAction
设置为将情节提要与代码链接:

- (IBAction)activityTurnedOn:(UISwitch*) activitySwitch;
问题:
是否有一种方法可以识别我在代码中使用的许多
UISwitch
对象中的每一个,以知道哪一个刚刚打开或关闭?是否有一个属性可以通过Interface Builder分配,我可以在代码中测试它?

是的,在Interface Builder中设置对象标记,然后您可以在代码中检索它:
如果(activitySwitch.tag==1).
是的,在Interface Builder中设置对象标记,然后您可以在代码中检索它:
如果(activitySwitch.tag==1)…我假定您不能为这些开关分配不同的插座

  • (这不是黑客攻击)您可以为每个属性分配“tag”属性,并在activityTurnedOn:方法中检查它
  • (这是一个黑客)你还可以检查一些奇怪的参数,比如开关的y位置
  • (可能也不可能)您可以创建UISwitch的几个子类,并为开关分配不同的类

我假设您不能为这些开关分配不同的插座

  • (这不是黑客攻击)您可以为每个属性分配“tag”属性,并在activityTurnedOn:方法中检查它
  • (这是一个黑客)你还可以检查一些奇怪的参数,比如开关的y位置
  • (可能也不可能)您可以创建UISwitch的几个子类,并为开关分配不同的类

您将每个开关作为一个出口,然后检查
activitySwitch==
您的出口变量。我发现这使得代码比使用标记更具可读性,并且您通常希望从其他地方更改交换机的状态,因此最终需要插座

您将每个开关作为一个出口,然后检查您的出口变量是否为
activitySwitch==
。我发现这使得代码比使用标记更具可读性,并且您通常希望从其他地方更改交换机的状态,因此最终需要插座

您可以在.h文件中指定2个IBOutlet,如下所示:

IBOutlet UISwitch *firstSwitch;
IBOutlet UISwitch *secondSwitch;
在您的方法中,请执行以下操作:

- (IBAction)activityTurnedOn:(UISwitch*) activitySwitch {
if (activitySwitch == firstSwitch) {

} else if (activitySwicth == secondSwitch) {

 }
}
或者,您可以在nib文件中将标记分配给交换机(因为它们源自UIView),并执行以下操作:


您可以在.h文件中指定2个IBOutlet,如下所示:

IBOutlet UISwitch *firstSwitch;
IBOutlet UISwitch *secondSwitch;
在您的方法中,请执行以下操作:

- (IBAction)activityTurnedOn:(UISwitch*) activitySwitch {
if (activitySwitch == firstSwitch) {

} else if (activitySwicth == secondSwitch) {

 }
}
或者,您可以在nib文件中将标记分配给交换机(因为它们源自UIView),并执行以下操作:


我喜欢这个。如何从界面生成器中执行此操作?或者您可以在代码中使用“switch1.tag=239;switch2.tag=240;”。这是一个简单的整数。为了使用
switch1.tag=something
,我需要每个开关都有单独的插座,对吗?也许你可以通过另一个参数在某处区分这些开关?在那里安装。但是,通常是的,你需要这样的outletsI。如何从界面生成器中执行此操作?或者您可以在代码中使用“switch1.tag=239;switch2.tag=240;”。这是一个简单的整数。为了使用
switch1.tag=something
,我需要每个开关都有单独的插座,对吗?也许你可以通过另一个参数在某处区分这些开关?在那里设置它们。但是,通常是的,你需要outlets。我试图避免对每个对象使用单独的
IBOultet
。我还没有写完我的答案。现在检查一下。我试图避免对每个对象使用单独的
IBOultet
。我还没有写完我的答案。现在检查一下。