现在我想在按钮选择器方法中传递参数,那么如何在按钮选择器方法中传递参数呢?
//Button creation
-(void) viewDidLoad
{
UIButton *imageOverlayBtn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
imageOverlayBtn.frame = CGRectMake(xOrigin, yOrigin, theSize.width, theSize.height);
//Pass this string into selector method
NSString *passString = [feedArray objectForKey:@"URLString"];
[imageOverlayBtn addTarget:self action:@selector(overlayBtnAction:) forControlEvents:UIControlEventTouchUpInside];
}
// Button Action
-(void) overlayBtnAction : (NSString *) getString
{
NSLog(@"The get string is %@", getString)
}
那么如何将字符串传递给选择器方法?请帮帮我。
感谢。
答案 0 :(得分:2)
首先,您应该使用此签名实施您的操作方法:
-(void) overlayBtnAction : (id) sender
{
...
}
其中sender是指向已调用此处理程序的UIButton(通常情况下为UIControl)的指针。
您的目标是self
,因此您可以声明NSString
变量是此类的成员。
所以在viewDidLoad
中你会有:
self.passString = [feedArray objectForKey:@"URLString"];
在处理程序中只使用其值:
-(void) overlayBtnAction : (id) sender
{
NSString *localVar = self.passString;
}
答案 1 :(得分:1)
如果你需要在这样的方法之间保持字符串,我建议把它放在你的头文件中。这样,您可以在需要时设置它并从实现中的任何位置访问它。我不认为将参数传递给UI动作是一种很好的设计实践。