Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Iphone 使用(id)发送器从按钮获取信息_Iphone_Objective C_Button - Fatal编程技术网

Iphone 使用(id)发送器从按钮获取信息

Iphone 使用(id)发送器从按钮获取信息,iphone,objective-c,button,Iphone,Objective C,Button,这很简单,但我不知道怎么做。要从按钮获取标题,可以使用: NSString *title = [sender titleForState:UIControlStateNormal]; 但是,是否有办法从按钮获取其他信息,如“标签”或“提示” 如果没有,我希望在按下不同的按钮时能够有不同的动作。所以,有一个“添加1”按钮,一个“添加2”按钮等等,我用同样的“动作”来做稍微不同的事情。这可以通过一个“If”语句来解决,但我不确定如何进行比较。(假设按钮标题为“赢”): 不起作用,那么我如何进行比较

这很简单,但我不知道怎么做。要从按钮获取标题,可以使用:

NSString *title = [sender titleForState:UIControlStateNormal];
但是,是否有办法从按钮获取其他信息,如“标签”或“提示”

如果没有,我希望在按下不同的按钮时能够有不同的动作。所以,有一个“添加1”按钮,一个“添加2”按钮等等,我用同样的“动作”来做稍微不同的事情。这可以通过一个“If”语句来解决,但我不确定如何进行比较。(假设按钮标题为“赢”):

不起作用,那么我如何进行比较呢

(我还尝试:

NSString *compare = [[NSString alloc] initWithFormat:@"WIN"];
if (title == compare)
{
do something
}

)

您应该始终使用isEqualToString比较字符串:

if ([title isEqualToString:@"WIN"])
有时使用==运算符可以正确比较字符串,例如在比较常量字符串时,但在Objective-C(或Java)中不应使用==进行字符串比较

如果使用==比较字符串,则会比较它们的内存地址。如果比较设置为某个常量的字符串,则==将为真。如果它们是相同的字符串,但内存地址不同,则==将为false


在Python这样的语言中,==是重载的,因此您会得到“期望”的行为。

您应该始终使用isEqualToString比较字符串:

if ([title isEqualToString:@"WIN"])
有时使用==运算符可以正确比较字符串,例如在比较常量字符串时,但在Objective-C(或Java)中不应使用==进行字符串比较

如果使用==比较字符串,则会比较它们的内存地址。如果比较设置为某个常量的字符串,则==将为真。如果它们是相同的字符串,但内存地址不同,则==将为false


在Python这样的语言中,==是重载的,因此您可以获得“期望”的行为。

在紧急情况下,您可以使用的另一个选项是设置按钮的
标记
属性(在IB或代码中),然后选中


if(sender.tag==69){//one-button-code}else{other-button-code}
在紧急情况下,您可以使用的另一个选项是设置按钮的
tag
属性(在IB或in-code中),然后选中


if(sender.tag==69){//one-button-code}else{other-button-code}

我还想指出,通常情况下,您没有两个按钮可以执行不同的操作,它们使用相同的操作。而是为按钮创建两个单独的操作。通过这种方式,您不需要检查有关按钮的任何信息(例如,其标题)来确定您应该执行的操作。我还想指出,通常情况下,您没有两个按钮可以执行不同的操作,它们使用相同的操作。而是为按钮创建两个单独的操作。通过这种方式,您无需检查有关按钮的任何信息(例如,其标题)来确定您应该做什么。