我怎样才能在iPhone的按钮选择器方法中传递参数?

时间:2011-01-22 12:01:07

标签: iphone uibutton

现在我想在按钮选择器方法中传递参数,那么如何在按钮选择器方法中传递参数呢?

    //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)
    }

那么如何将字符串传递给选择器方法?请帮帮我。

感谢。

2 个答案:

答案 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动作是一种很好的设计实践。