好的问题很快。我正在使用MKMapAnnotation向我的iOS添加注释。我使用公开按钮创建一个int和一个注释,它调用方法loadPano,如下所示:
int integervariable;
[disclosureButton addTarget:self
action:@selector(loadPano)
forControlEvents:UIControlEventTouchUpInside];
现在说我想在方法load pano中访问整数变量我该如何做到这一点,我很难理解如何像上面那样调用变量到新方法。
答案 0 :(得分:1)
如果您只需传递与每个公开按钮关联的整数,您可以设置disclosurebutton.tag = integer value;
。
hacky在标签中传递数据,但在简单的情况下它可以正常工作。
同样为了这个工作,请以这种方式声明loadpano
:
- (void)loadPano:(UIButton*)sender
{
NSInteger relevantInteger = sender.tag;
// More code here
}
并设置目标如下:
[disclosureButton addTarget:self
action:@selector(loadPano:)
forControlEvents:UIControlEventTouchUpInside];
请注意,该方法现在采用一个参数,因此选择器包含一个冒号。
答案 1 :(得分:1)
有几种解决方案:
objc_setAssociatedObject()
和objc_getAssociatedObject()
答案 2 :(得分:0)
您无法在target-action方法中传递sender和eventType以外的值。
操作消息可以选择按顺序包含发件人和事件作为参数。
如果该integerVariable是常量,那么您可以将其设置为您从中启动该操作的控件的标记(在您的情况下,它是disclosureButton)。
或
您可以在类中获取实例变量,并在loadPano方法中访问该值。
答案 3 :(得分:-1)
在一般情况下,您可以使用目标,选择器及其所需的任何参数创建NSInvocation
的实例。然后调用调用的-invoke
方法将消息发送到目标。