Ok very quick question. I am adding annotations to my iOS using MKMapAnnotation. I create a int and an annotation with a disclosure button Which calls the method loadPano l
If you just have to pass an integer associated to each disclosurebutton, you can set disclosurebutton.tag = integer value;
.
Sort of hacky to pass data around in tags but in simple cases it works.
Also for this to work, declare loadpano
this way:
- (void)loadPano:(UIButton*)sender
{
NSInteger relevantInteger = sender.tag;
// More code here
}
And set the target like this:
[disclosureButton addTarget:self
action:@selector(loadPano:)
forControlEvents:UIControlEventTouchUpInside];
Note that the method now takes a parameter so the selector includes a colon.
You can not pass values other than sender and eventType in target-action methods.
The action message may optionally include the sender and the event as parameters, in that order.
If that integerVariable is a constant, then you can set it as a tag for the control from which you are initiating that action (in your case it is disclosureButton).
or
You can take an instance variable in your class, and access that value in loadPano method.
There are several solutions:
objc_setAssociatedObject()
and objc_getAssociatedObject()
In the general case, you can create an instance of NSInvocation
with your target, selector, and whatever parameters it needs. Then you call the invocation's -invoke
method to send the message to the target.